Yade wrapper class reference

Bodies

Body

class yade.wrapper.Body(inherits Serializable)

A particle, basic element of simulation; interacts with other bodies.

property aspherical

Whether this body has different inertia along principal axes; NewtonIntegrator makes use of this flag to call rotation integration routine for aspherical bodies, which is more expensive.

property bound

Bound, approximating volume for the purposes of collision detection.

property bounded

Whether this body should have Body.bound created. Note that bodies without a bound do not participate in collision detection. (In c++, use Body::isBounded/Body::setBounded)

property clumpId

Id of clump this body makes part of; invalid number if not part of clump; see Body::isStandalone, Body::isClump, Body::isClumpMember properties.

Not meant to be modified directly from Python, use O.bodies.appendClumped instead.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property dynamic

Whether this body will be moved by forces. (In c++, use Body::isDynamic/Body::setDynamic)

property flags

Bits of various body-related flags. Do not access directly. In c++, use isDynamic/setDynamic, isBounded/setBounded, isAspherical/setAspherical. In python, use Body.dynamic, Body.bounded, Body.aspherical.

property groupMask

Bitmask for interaction detection purposes: it is required that two bodies have at least one bit in common in their groupMask for their interaction to be possible from the Collider point of view.

property id

Unique id of this body.

intrs((Body)arg1) list :

Return list of all real interactions in which this body participates.

property isClump

True if this body is clump itself, false otherwise.

property isClumpMember

True if this body is clump member, false otherwise.

property isFluidDomainBox

Whether this body is a Fluid grid bounding box should have Body.bound created. FluidDomainBboxes` do not participate to collision detection with their own bodies, they may interact with external bodies and other subdomains through virtual interactions. (In c++, use Body::getIsFluidDomainBbox/Body::setIsFluidDomainBbox)

property isStandalone

True if this body is neither clump, nor clump member; false otherwise.

property isSubdomain

Whether this body is a subdomain should have Body.bound created. Subdomains` do not participate to collision detection with their own bodies, they may interact with external bodies and other subdomains through virtual interactions. (In c++, use Body::getIsSubdomain/Body::setIsSubdomain)

property iterBorn

Step number at which the body was added to simulation.

property mask

Shorthand for Body::groupMask

property mat

Shorthand for Body::material

property material

Material instance associated with this body.

property shape

Geometrical Shape.

property state

Physical state.

property subdomain

the subdomain this body belongs to.

property timeBorn

Time at which the body was added to simulation.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

Shape

digraph Shape {
        rankdir=RL;
        margin="0.2,0.05";
        "Shape" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Shape"];
        "GridConnection" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GridConnection"];
        "GridConnection" -> "Sphere" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Lin4NodeTetra_Lin4NodeTetra_InteractionElement" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Lin4NodeTetra_Lin4NodeTetra_InteractionElement"];
        "Lin4NodeTetra_Lin4NodeTetra_InteractionElement" -> "DeformableCohesiveElement" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Clump" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Clump"];
        "Clump" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PFacet" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PFacet"];
        "PFacet" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "FluidDomainBbox" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FluidDomainBbox"];
        "FluidDomainBbox" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "DeformableElement" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.DeformableElement"];
        "DeformableElement" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Polyhedra" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Polyhedra"];
        "Polyhedra" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Lin4NodeTetra" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Lin4NodeTetra"];
        "Lin4NodeTetra" -> "DeformableElement" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Box" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Box"];
        "Box" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Wall" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Wall"];
        "Wall" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Tetra" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Tetra"];
        "Tetra" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Sphere" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Sphere"];
        "Sphere" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "GridNode" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GridNode"];
        "GridNode" -> "Sphere" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PotentialParticle" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PotentialParticle"];
        "PotentialParticle" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Cylinder" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Cylinder"];
        "Cylinder" -> "Sphere" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "LevelSet" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.LevelSet"];
        "LevelSet" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Subdomain" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Subdomain"];
        "Subdomain" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ChainedCylinder" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ChainedCylinder"];
        "ChainedCylinder" -> "Cylinder" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "DeformableCohesiveElement" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.DeformableCohesiveElement"];
        "DeformableCohesiveElement" -> "DeformableElement" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PotentialBlock" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PotentialBlock"];
        "PotentialBlock" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Node" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Node"];
        "Node" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Facet" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Facet"];
        "Facet" -> "Shape" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of Shape.

class yade.wrapper.Shape(inherits Serializable)

Geometry of a body

property color

Color for rendering (normalized RGB).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property highlight

Whether this Shape will be highlighted when rendered.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.Box(inherits Shape Serializable)
property color

Color for rendering (normalized RGB).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property extents

Half-size of the cuboid

property highlight

Whether this Shape will be highlighted when rendered.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.ChainedCylinder(inherits Cylinder Sphere Shape Serializable)

Geometry of a deformable chained cylinder, using geometry Cylinder.

property chainedOrientation

Deviation of node1 orientation from node-to-node vector

property color

Color for rendering (normalized RGB).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property highlight

Whether this Shape will be highlighted when rendered.

property initLength

tensile-free length, used as reference for tensile strain

property length

Length [m]

property radius

Radius [m]

property segment

Length vector

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.Clump(inherits Shape Serializable)

Rigid aggregate of bodies whose usage is detailed here

property color

Color for rendering (normalized RGB).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property highlight

Whether this Shape will be highlighted when rendered.

property ids

Ids of constituent particles (only informative; direct modifications will have no effect).

property members

Return clump members as {‘id1’:(relPos,relOri),…}

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.Cylinder(inherits Sphere Shape Serializable)

Geometry of a cylinder, as Minkowski sum of line and sphere.

property color

Color for rendering (normalized RGB).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property highlight

Whether this Shape will be highlighted when rendered.

property length

Length [m]

property radius

Radius [m]

property segment

Length vector

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.DeformableCohesiveElement(inherits DeformableElement Shape Serializable)

Tetrahedral Deformable Element Composed of Nodes

addFace((DeformableElement)arg1, (Vector3)arg2) None :

Add a face into the element

addNode((DeformableElement)arg1, (Body)arg2) None :

Add a node shared_pt<:yref:’Body’>& as into the element

addPair((DeformableCohesiveElement)arg1, (Body)arg2, (Body)arg3) None :

Add a node shared_pt<:yref:’Body’>& as into the element

property color

Color for rendering (normalized RGB).

delNode((DeformableElement)arg1, (Body)arg2) None :

Remove a node shared_pt<:yref:’Body’>& from the element

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property elementframe
property faces

Faces of the element for drawing

getNode((DeformableElement)arg1, (int)arg2) Body :

Get a node shared_pt<:yref:’Body’>& as into the element

getVolume((DeformableElement)arg1) float :

Get volume of the element

property highlight

Whether this Shape will be highlighted when rendered.

property localmap

Ids and relative positions+orientations of members of the deformable element (should not be accessed directly)

property nodepairs

Ids and relative position+orientation difference of members of the cohesive deformable element in the inital condition (should not be accessed directly)

removeLastFace((DeformableElement)arg1) None :

Remove a face from the element

removePair((DeformableCohesiveElement)arg1, (Body)arg2, (Body)arg3) None :

Add a node shared_pt<:yref:’Body’>& as into the element

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.DeformableElement(inherits Shape Serializable)

Deformable aggregate of nodes

addFace((DeformableElement)arg1, (Vector3)arg2) None :

Add a face into the element

addNode((DeformableElement)arg1, (Body)arg2) None :

Add a node shared_pt<:yref:’Body’>& as into the element

property color

Color for rendering (normalized RGB).

delNode((DeformableElement)arg1, (Body)arg2) None :

Remove a node shared_pt<:yref:’Body’>& from the element

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property elementframe
property faces

Faces of the element for drawing

getNode((DeformableElement)arg1, (int)arg2) Body :

Get a node shared_pt<:yref:’Body’>& as into the element

getVolume((DeformableElement)arg1) float :

Get volume of the element

property highlight

Whether this Shape will be highlighted when rendered.

property localmap

Ids and relative positions+orientations of members of the deformable element (should not be accessed directly)

removeLastFace((DeformableElement)arg1) None :

Remove a face from the element

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.Facet(inherits Shape Serializable)

Facet (triangular particle) geometry.

property area

Facet’s area

property color

Color for rendering (normalized RGB).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property highlight

Whether this Shape will be highlighted when rendered.

property normal

Facet’s normal \(\vec n\) (in local coordinate system) oriented towards \(\vec{e_0} \times \vec {e_1}\) with \(\vec {e_0} = \vec{V_0V_1}\), \(\vec {e_1} = \vec{V_1V_2}\) and \(\vec {V_i}\) the vertices

setVertices((Facet)arg1, (Vector3)v0, (Vector3)v1, (Vector3)v2) None :

Defines vertices

Parameters:
Returns:

nothing

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vertices

Vertex positions in local coordinates.

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.FluidDomainBbox(inherits Shape Serializable)

The bounding box of a fluid grid from one OpenFOAM/YALES2 proc

property bIds

ids of bodies intersecting with this subdomain,

property color

Color for rendering (normalized RGB).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property domainRank

rank of the OpenFOAM/YALES2 proc

property hasIntersection

if this Yade subdomain has intersection with this OpenFOAM/YALES2 subdomain

property highlight

Whether this Shape will be highlighted when rendered.

property maxBound

max bounds of the fluid grid

property minBound

min bounds of the fluid grid

property minMaxisSet

flag to check if the min max bounds of this body are set.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.GridConnection(inherits Sphere Shape Serializable)

GridConnection shape (see [Effeindzourou2016], [Bourrier2013]). Component of a grid designed to link two GridNodes. It is highly recommended to use gridpfacet.gridConnection to generate correct GridConnections.

addPFacet((GridConnection)arg1, (Body)Body) None :

Add a PFacet to the GridConnection.

property cellDist

Distance of bodies in cell size units, if using periodic boundary conditions. Note that periodic boundary conditions for GridConnections have not yet been fully implemented.

property color

Color for rendering (normalized RGB).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

getPFacets((GridConnection)arg1) object :

get list of linked PFacets.

property highlight

Whether this Shape will be highlighted when rendered.

property node1

First Body the GridConnection is connected to.

property node2

Second Body the GridConnection is connected to.

property periodic

true if two nodes from different periods are connected.

property radius

Radius [m]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.GridNode(inherits Sphere Shape Serializable)

GridNode shape, component of a grid. To create a Grid, place the nodes first, they will define the spacial discretisation of it. It is highly recommended to use gridpfacet.gridNode to generate correct GridNodes. Note that the GridNodes should only be in an Interaction with other GridNodes. The Sphere-Grid contact is only handled by the GridConnections.

addConnection((GridNode)arg1, (Body)Body) None :

Add a GridConnection to the GridNode.

addPFacet((GridNode)arg1, (Body)Body) None :

Add a PFacet to the GridNode.

property color

Color for rendering (normalized RGB).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

getConnections((GridNode)arg1) object :

get list of linked GridConnection’s.

getPFacets((GridNode)arg1) object :

get list of linked PFacet’s.

property highlight

Whether this Shape will be highlighted when rendered.

property radius

Radius [m]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.LevelSet(inherits Shape Serializable)

A level set description of particle shape based on a discrete distance field and surface nodes [Duriez2021a] [Duriez2021b]. See examples/levelSet for example scripts.

property axesAABE

The half lengths of the principal axes of the axis-aligned bounding ellipsoid (AABE) of the level-set shape. Format (rx,ry,rz). Only works for VLS-DEM.

center((LevelSet)arg1) Vector3 :

The center of mass of the volume (considering obviously an uniform density for this volume), in local axes (for verification purposes, by comparison with the origin).

property color

Color for rendering (normalized RGB).

computeMarchingCubes((LevelSet)arg1) None :

Compute or recompute the triangulation of the particle surface after using the Marching Cubes algorithm on distField.

property corners

The 8 corners of an axis-aligned bounding box, in local axes. It is computed once for all by Bo1_LevelSet_Aabb and used by the same Functor to get Body.bound.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property distField

The signed (< 0 when inside) distance-to-surface function as a discrete scalar field on lsGrid, with distField[i][j][k] corresponding to lsGrid.gridPoint(i,j,k). From Python, slice this multi-dimensional list with care: while distField[i][:][:] corresponds to values on a x-cst plane, distField[:][:][k] is not at z-constant (use [[distField[i][j][k] for j in ..] for i in ..] instead)

distance((LevelSet)arg1, (Vector3)pt[, (bool)unbound=False]) float :

Distance to surface at pt, with pt being expressed in the local frame. Has an ‘unbound’ flag signaling whether to allow the computation of distance values outside of the grid extents.

getSurface((LevelSet)arg1) float :

Returns particle surface as computed from numeric integration over the surface nodes. Requires nodesPath = 1.

property hasAABE

Flag to indicate whether an axis-aligned bounding ellipsoid (AABE) has been provided by the user. If true, you must specify axisAABE. Only works for VLS-DEM.

property highlight

Whether this Shape will be highlighted when rendered.

inertia((LevelSet)arg1) Vector3 :

The eigenvalues of the geometric inertia matrix (the one considering the infinitesimal volume as the integrand, instead of infinitesimal mass) as a Vector3r.

property lsGrid

The regular grid carrying distField, in local axes.

marchingCubesNbTriangles((LevelSet)arg1) int :

Returns the number of triangles forming the surface triangulation as per the Marching Cubes algorithm (executed on distField).

marchingCubesNormals((LevelSet)arg1) object :

Returns the normals for a surface triangulation obtained after executing the Marching Cubes algorithm on distField.

marchingCubesVertices((LevelSet)arg1) object :

Returns the vertices for a surface triangulation obtained after executing the Marching Cubes algorithm on distField.

property nSurfNodes

The number of boundary nodes in surfNodes, previously coined nNodes in [Duriez2021b]. Usually set through utils levelSetBody() function (has to be set at instantiation in all cases). Please use a perfect square + 2 if not twoD and if nodesPath = 1.

property nodesPath

Defines how the space of spherical coordinates \((\theta \in [0;\pi] ,\varphi\in [0;2 \pi])\) is discretized when ray tracing the boundary nodes: 1 gives a rectangular partition of that space, plus two nodes at \(\theta = 0 [\pi]\); 2 locates the nodes along a spiral path [Duriez2021a]

property nodesTol

Tolerance coefficient for accepting (if \(|\phi| / L <\) nodesTol \(\times\) numeric precision with \(\phi\) the return value of distance and \(L\) a body-characteristic length taken as \(\sqrt[3]{V}\) with \(V\) the volume, or \(\sqrt{V/g}\) with \(g\) the grid spacing if twoD) boundary nodes proposed by the ray tracing algorithm.

normal((LevelSet)arg1, (Vector3)pt[, (bool)unbound=False]) Vector3 :

Normal vector to the surface at some pt. Local frame applies to both output normal and input pt. Has an ‘unbound’ flag signaling whether to allow the computation of the normal outside of the grid extents.

rayTrace((LevelSet)arg1, (Vector3)ray) None :

Performs one ray tracing, possibly modifying surfNodes. Provided for debugging purposes

property smearCoeff

Rules the smearing coefficient \(\varepsilon > 0\) of the Heaviside step function for a smooth integration of the particle’s volume close to its surface (the higher \(\varepsilon\) the smoother, i.e. the more diffuse the surface in terms of volume integration). Given in reciprocal multiples of \(R_{cell}\) the half diagonal of the cells of the lsGrid: \(\varepsilon = R_{cell}\times 1/\) smearCoeff (smearing is deactivated if negative).

property sphericity

Shape sphericity computed from boundary nodes and assuming both largest inscribed sphere and smallest circumscribed sphere have the origin (of local axes) as center.

property surfNodes

Surface discretization nodes (the list of) used for exact contact treatment in Ig2_LevelSet_LevelSet_ScGeom, previously coined boundNodes in [Duriez2021b]. Expressed in local frame. Getting them back after a save/load cycle requires to launch one iteration or to first ask for shape.center.

property twoD

True for z-invariant shapes. Serves to restrict the definition of surfNodes in the (x,y) plane.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

volume((LevelSet)arg1) float :

The volume defined by the negative domain of the level set function, in a voxellised fashion. A voxel is said to be inside according to the level set value at its minimum grid point and depending upon possible smearing considerations as per smearCoeff.

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.Lin4NodeTetra(inherits DeformableElement Shape Serializable)

Tetrahedral Deformable Element Composed of Nodes

addFace((DeformableElement)arg1, (Vector3)arg2) None :

Add a face into the element

addNode((DeformableElement)arg1, (Body)arg2) None :

Add a node shared_pt<:yref:’Body’>& as into the element

property color

Color for rendering (normalized RGB).

delNode((DeformableElement)arg1, (Body)arg2) None :

Remove a node shared_pt<:yref:’Body’>& from the element

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property elementframe
property faces

Faces of the element for drawing

getNode((DeformableElement)arg1, (int)arg2) Body :

Get a node shared_pt<:yref:’Body’>& as into the element

getVolume((DeformableElement)arg1) float :

Get volume of the element

property highlight

Whether this Shape will be highlighted when rendered.

property localmap

Ids and relative positions+orientations of members of the deformable element (should not be accessed directly)

removeLastFace((DeformableElement)arg1) None :

Remove a face from the element

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.Lin4NodeTetra_Lin4NodeTetra_InteractionElement(inherits DeformableCohesiveElement DeformableElement Shape Serializable)

Tetrahedral Deformable Element Composed of Nodes

addFace((DeformableElement)arg1, (Vector3)arg2) None :

Add a face into the element

addNode((DeformableElement)arg1, (Body)arg2) None :

Add a node shared_pt<:yref:’Body’>& as into the element

addPair((DeformableCohesiveElement)arg1, (Body)arg2, (Body)arg3) None :

Add a node shared_pt<:yref:’Body’>& as into the element

property color

Color for rendering (normalized RGB).

delNode((DeformableElement)arg1, (Body)arg2) None :

Remove a node shared_pt<:yref:’Body’>& from the element

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property elementframe
property faces

Faces of the element for drawing

getNode((DeformableElement)arg1, (int)arg2) Body :

Get a node shared_pt<:yref:’Body’>& as into the element

getVolume((DeformableElement)arg1) float :

Get volume of the element

property highlight

Whether this Shape will be highlighted when rendered.

property localmap

Ids and relative positions+orientations of members of the deformable element (should not be accessed directly)

property nodepairs

Ids and relative position+orientation difference of members of the cohesive deformable element in the inital condition (should not be accessed directly)

removeLastFace((DeformableElement)arg1) None :

Remove a face from the element

removePair((DeformableCohesiveElement)arg1, (Body)arg2, (Body)arg3) None :

Add a node shared_pt<:yref:’Body’>& as into the element

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.Node(inherits Shape Serializable)

Geometry of node particle.

property color

Color for rendering (normalized RGB).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property highlight

Whether this Shape will be highlighted when rendered.

property radius

Radius [m]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.PFacet(inherits Shape Serializable)

PFacet (particle facet) geometry (see [Effeindzourou2016], [Effeindzourou2015a]). It is highly recommended to use the helper functions in gridpfacet (e.g., gridpfacet.pfacetCreator1-4) to generate correct PFacet elements.

property area

PFacet’s area

property cellDist

Distance of bodies in cell size units, if using periodic boundary conditions. Note that periodic boundary conditions for PFacets have not yet been fully implemented.

property color

Color for rendering (normalized RGB).

property conn1

First Body the Pfacet is connected to.

property conn2

Second Body the Pfacet is connected to.

property conn3

third Body the Pfacet is connected to.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property highlight

Whether this Shape will be highlighted when rendered.

property node1

First Body the Pfacet is connected to.

property node2

Second Body the Pfacet is connected to.

property node3

third Body the Pfacet is connected to.

property normal

PFacet’s normal (in local coordinate system)

property radius

PFacet’s radius

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.Polyhedra(inherits Shape Serializable)

Polyhedral (convex) geometry.

GetCentroid((Polyhedra)arg1) Vector3 :

return polyhedra’s centroid

GetInertia((Polyhedra)arg1) Vector3 :

return polyhedra’s inertia tensor

GetOri((Polyhedra)arg1) Quaternion :

return polyhedra’s orientation

GetSurfaceTriangulation((Polyhedra)arg1) object :

triangulation of facets (for plotting)

GetSurfaces((Polyhedra)arg1) object :

get indices of surfaces’ vertices (for postprocessing)

GetVolume((Polyhedra)arg1) float :

return polyhedra’s volume

Initialize((Polyhedra)arg1) None :

Initialization

property color

Color for rendering (normalized RGB).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property highlight

Whether this Shape will be highlighted when rendered.

property seed

Seed for random generator.

setVertices((Polyhedra)arg1, (object)arg2) None :

set vertices and update receiver. Takes a list/tuple of vertices as argument.

Note

Causes memory leaks, so if you want to use it maaaany times, use one of setVertices mentioned lower, passing each vertex as individual argument (currently only setVertices(v1,v2,v3,v4) for tetrahedron is implemented, on request it is easy to implement more vertices).

setVertices4((Polyhedra)arg1, (Vector3)arg2, (Vector3)arg3, (Vector3)arg4, (Vector3)arg5) None :

set 4 vertices and update receiver. Each vertex is single argument.

property size

Size of the grain in meters - x,y,z - before random rotation

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property v

Polyhedron vertices in local coordinate system.

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.PotentialBlock(inherits Shape Serializable)

Geometry of PotentialBlock.

property AabbMinMax

Whether the exact Aabb should be calculated. If false, an approximate cubic Aabb is defined with edges of 2R

property R

R in Potential Particles. If left zero, a default value is calculated as half the distance of the farthest vertices

property a

List of a coefficients of plane normals

property b

List of b coefficients of plane normals

property boundaryNormal

Normal direction of boundary if fixedNormal=True

property c

List of c coefficients of plane normals

property cohesion

Cohesion (stress) of each face (property for plane, rock joint)

property color

Color for rendering (normalized RGB).

property connectivity

Connectivity of vertices for each plane (auto-updated)

property d

List of d coefficients of plane equations

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property erase

Parameter to mark particles to be removed (for excavation)

property fixedNormal

Whether to fix the contact normal at a boundary, using boundaryNormal

property highlight

Whether this Shape will be highlighted when rendered.

property id

Particle id (for graphics in vtk output)

property inertia

Principal inertia tensor (auto-updated)

property intactRock

Property for plane

property isBolt

Whether a block is part of a bolt (used in the Rockbolt.cpp script)

property isBoundary

Whether the particle is part of a boundary block

property isLining

Whether particle is part of tunnel lining (used in the RockLining.cpp script)

property jointType

jointType

property k

k in Potential Particles (not used)

property liningFriction

Lining friction

property liningLength

Lining spacing between nodes

property liningNormalPressure

Normal pressure acting on lining

property liningStiffness

Lining stiffness

property liningTensionGap

Numerical gap between lining and block to allowing tension to be calculated

property liningTotalPressure

Total pressure acting on lining

property maxAabb

Max from box centre: Used for visualisation in vtk

property minAabb

Min from box centre: Used for visualisation in vtk

property orientation

Principal orientation

property phi_b

Basic friction angle of each face (property for plane, rock joint)

property phi_r

Residual friction angle of each face (property for plane, rock joint)

property position

Initial position of the particle, if initially defined eccentrically to the centroid (auto-updated)

property r

r in Potential Particles

property tension

Tension (stress) of each face (property for plane, rock joint)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vertices

Vertices (auto-updated)

property volume

Volume (auto-updated)

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.PotentialParticle(inherits Shape Serializable)

EXPERIMENTAL. Geometry of PotentialParticle.

property AabbMinMax

Whether the exact Aabb should be calculated. If false, an approximate cubic Aabb is defined with edges of 2R

property R

R in Potential Particles

property a

List of a coefficients of plane normals

property b

List of b coefficients of plane normals

property boundaryNormal

Normal direction of boundary if fixedNormal=True

property c

List of c coefficients of plane normals

property color

Color for rendering (normalized RGB).

property d

List of d coefficients of plane normals

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property fixedNormal

Whether to fix the contact normal at a boundary, using boundaryNormal

property highlight

Whether this Shape will be highlighted when rendered.

property id

Particle id (for graphics in vtk output)

property isBoundary

Whether the particle is part of a boundary particle

property k

k in Potential Particles

property maxAabb

Max from box centre: Used for visualisation in vtk and qt

property maxAabbRotated

Max from box centre: Used for primary contact detection

property minAabb

Min from box centre: Used for visualisation in vtk and qt

property minAabbRotated

Min from box centre: Used for primary contact detection

property r

r in Potential Particles

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vertices

Vertices

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.Sphere(inherits Shape Serializable)

Geometry of spherical particle.

property color

Color for rendering (normalized RGB).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property highlight

Whether this Shape will be highlighted when rendered.

property radius

Radius [m]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.Subdomain(inherits Shape Serializable)

The bounding box of a mpi subdomain. Stores internals and provides optimized functions for communications between workers. This class may not be used directly. Instead, Subdomains are appended automatically to the scene bodies when using mpy.mpirun

boundOnAxis((Subdomain)arg1, (Bound)bound, (Vector3)axis, (bool)min) float :

computes projected position of a bound in a certain direction

boundOnAxis( (Subdomain)arg1, (Bound)bound, (Vector3)axis, (bool)min) -> float :

computes projected position of a bound in a certain direction

property boundsMax

max corner of all bboxes of members; differs from effective domain bounds by the extra length (sweepLength)

property boundsMin

min corner of all bboxes of members; differs from effective domain bounds by the extra length (sweepLength)

centerOfMass((Subdomain)arg1) Vector3 :

returns center of mass of assigned bodies

centerOfMass( (Subdomain)arg1) -> Vector3 :

returns center of mass of assigned bodies

cleanIntersections((Subdomain)arg1, (int)otherDomain) None :

makes sure that the ids in the current subdomain belong to the current subdomain

property color

Color for rendering (normalized RGB).

property comm

Communicator to be used for MPI (converts mpi4py comm <-> c++ comm)

completeSendBodies((Subdomain)arg1) None :

calls MPI_wait to complete the non blocking sends/recieves.

countIntsWith((Subdomain)arg1, (int)body, (int)someSubDomain[, (Scene)someSubDomain=<Scene instance at 0x30090c0>]) int :

returns for a body the count of interactions (real or virtual) with bodies from a certain subdomain, interactions with subdomains excluded. Third parameter (scene pointer) can be left to default (equivalent to O._sceneObj).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property extraLength

verlet dist for the subdomain, added to bodies verletDist

filterIntersections((Subdomain)arg1) float :

clear intersections and mirror intersections of all non-interacting bodies.

filteredInts((Subdomain)arg1, (int)someSubDomain, (bool)mirror) object :

return a copy of intersections or mirrorIntersections from which non-interacting bodies have been removed.

getMirrorIntrs((Subdomain)arg1) None :

get mirrorIntersections from other subdomains

getRankSize((Subdomain)arg1) None :

set subdomain ranks, used for communications -> merging, sending bodies etc.

getStateBoundsValuesFromIds((Subdomain)arg1, (object)b_ids) object :

returns pos,vel,angVel,ori,bounds of listed bodies.

getStateValues((Subdomain)arg1, (int)otherDomain) object :

returns pos,vel,angVel,ori of bodies interacting with a given otherDomain, based on Subdomain.intersections.

getStateValuesFromIds((Subdomain)arg1, (object)b_ids) object :

returns pos,vel,angVel,ori of listed bodies.

property highlight

Whether this Shape will be highlighted when rendered.

property ids

Ids of owned particles.

init((Subdomain)arg1) None :

Initialize subdomain variables as rank and buffer sizes, call this from each thread after scene distribution by master.

property intersections

lists of bodies from this subdomain intersecting other subdomains. WARNING: only assignement and concatenation allowed

medianFilterCPP((Subdomain)arg1, (int)arg2, (Vector3)bodiesToRecv, (Vector3)otherSubdomain, (int)oterSubdomainCenterofMass, (bool)useAABB) object :

cpp version of median filter, used for body reallocation operations.

mergeOp((Subdomain)arg1) None :

merge with setting interactions

migrateBodiesSend((Subdomain)arg1, (object)bodiesToSend, (int)destination) None :

ids of body to be sent have their subdomain parameter reassigned, followed by sendBodies

property mirrorIntersections

lists of bodies from other subdomains intersecting this one. WARNING: only assignement and concatenation allowed

mpiIrecvStates((Subdomain)arg1, (int)otherSubdomain) None :

mpi-Irecv states from another domain (non-blocking)

mpiRecvStates((Subdomain)arg1, (int)otherSubdomain) None :

mpi-recv states from another domain (blocking)

mpiSendStates((Subdomain)arg1, (int)otherSubdomain) None :

mpi-send states from current domain to another domain (blocking)

mpiWaitReceived((Subdomain)arg1, (int)otherSubdomain) None :

mpi-Wait states from another domain (upon return the buffer is set)

receiveBodies((Subdomain)arg1, (int)sender) None :

Receive the bodies from MPI sender rank to MPI receiver rank

sendBodies((Subdomain)sender, (int)receiver, (object)idsToSend) None :

Copy the bodies from MPI sender rank to MPI receiver rank

setIDstoSubdomain((Subdomain)arg1, (list)idList) None :

set list of ids to the subdomain.

setMinMax((Subdomain)arg1) None :

returns bounding min-max based on members bounds. precondition: the members bounds have been dispatched already, else we re-use old values. Carefull if subdomain is not at the end of O.bodies.

setStateBoundsValuesFromIds((Subdomain)arg1, (object)b_ids, (object)input) None :

set pos,vel,angVel,ori,bounds from listed body ids and data.

setStateValuesFromBuffer((Subdomain)arg1, (int)subdomain) None :

set pos,vel,angVel,ori from state buffer.

setStateValuesFromIds((Subdomain)arg1, (object)b_ids, (object)input) None :

set pos,vel,angVel,ori from listed body ids and data.

splitBodiesToWorkers((Subdomain)arg1, (bool)eraseWorkerBodies) None :

of true bodies in workers are erased and reassigned.

property subdomains

subdomain ids of other bodies, WARNING: only assignement and concatenation allowed

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

updateLocalIds((Subdomain)arg1, (bool)eraseRemoteMastrer) None :

updates the ids in the subdomain id vector, if not eraseRemoteMastrer, body->subdomain in master are updated.

updateNewMirrorIntrs((Subdomain)arg1, (int)otherdomain, (object)newMirrorList) None :

update the mirrorIntersections of a specific subdomain

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.Tetra(inherits Shape Serializable)

Tetrahedron geometry.

property color

Color for rendering (normalized RGB).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property highlight

Whether this Shape will be highlighted when rendered.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property v

Tetrahedron vertices (in local coordinate system).

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

class yade.wrapper.Wall(inherits Shape Serializable)

Object representing infinite plane aligned with the coordinate system (axis-aligned wall).

property axis

Axis of the normal; can be 0,1,2 for +x, +y, +z respectively (Body’s orientation is disregarded for walls)

property color

Color for rendering (normalized RGB).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Shape)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property highlight

Whether this Shape will be highlighted when rendered.

property sense

Which side of the wall interacts: -1 for negative only, 0 for both, +1 for positive only

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Whether this Shape is rendered using color surfaces, or only wireframe (can still be overridden by global config of the renderer).

State

digraph State {
        rankdir=RL;
        margin="0.2,0.05";
        "State" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.State"];
        "WireState" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.WireState"];
        "WireState" -> "State" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ThermalState" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ThermalState"];
        "ThermalState" -> "State" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "JCFpmState" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.JCFpmState"];
        "JCFpmState" -> "ThermalState" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PartialSatState" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PartialSatState"];
        "PartialSatState" -> "State" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CpmState" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CpmState"];
        "CpmState" -> "State" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ChainedState" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ChainedState"];
        "ChainedState" -> "State" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of State.

class yade.wrapper.State(inherits Serializable)

State of a body (spatial configuration, internal variables).

property angMom

Current angular momentum

property angVel

Current angular velocity

property blockedDOFs

Degress of freedom where linear/angular velocity will be always constant (equal to zero, or to an user-defined value), regardless of applied force/torque. String that may contain ‘xyzXYZ’ (translations and rotations).

property densityScaling

(auto-updated) see GlobalStiffnessTimeStepper::targetDt.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((State)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

displ((State)arg1) Vector3 :

Displacement from reference position (pos - refPos)

property inertia

Inertia of associated body, in local coordinate system.

property isDamped

Damping in NewtonIntegrator can be deactivated for individual particles by setting this variable to FALSE. E.g. damping is inappropriate for particles in free flight under gravity but it might still be applicable to other particles in the same simulation.

property mass

Mass of this body

property ori

Current orientation.

property pos

Current position.

property refOri

Reference orientation

property refPos

Reference position

rot((State)arg1) Vector3 :

Rotation from reference orientation (as rotation vector)

property se3

Position and orientation as one object.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vel

Current linear velocity.

class yade.wrapper.ChainedState(inherits State Serializable)

State of a chained bodies, containing information on connectivity in order to track contacts jumping over contiguous elements. Chains are 1D lists from which id of chained bodies are retrieved via rank and chainNumber.

addToChain((ChainedState)arg1, (int)bodyId) None :

Add body to current active chain

property angMom

Current angular momentum

property angVel

Current angular velocity

property bId

id of the body containing - for postLoad operations only.

property blockedDOFs

Degress of freedom where linear/angular velocity will be always constant (equal to zero, or to an user-defined value), regardless of applied force/torque. String that may contain ‘xyzXYZ’ (translations and rotations).

property chainNumber

chain id.

currentChain = 0
property densityScaling

(auto-updated) see GlobalStiffnessTimeStepper::targetDt.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((State)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

displ((State)arg1) Vector3 :

Displacement from reference position (pos - refPos)

property inertia

Inertia of associated body, in local coordinate system.

property isDamped

Damping in NewtonIntegrator can be deactivated for individual particles by setting this variable to FALSE. E.g. damping is inappropriate for particles in free flight under gravity but it might still be applicable to other particles in the same simulation.

property mass

Mass of this body

property ori

Current orientation.

property pos

Current position.

property rank

rank in the chain.

property refOri

Reference orientation

property refPos

Reference position

rot((State)arg1) Vector3 :

Rotation from reference orientation (as rotation vector)

property se3

Position and orientation as one object.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vel

Current linear velocity.

class yade.wrapper.CpmState(inherits State Serializable)

State information about body use by cpm-model.

None of that is used for computation (at least not now), only for post-processing.

property angMom

Current angular momentum

property angVel

Current angular velocity

property blockedDOFs

Degress of freedom where linear/angular velocity will be always constant (equal to zero, or to an user-defined value), regardless of applied force/torque. String that may contain ‘xyzXYZ’ (translations and rotations).

property damageTensor

Damage tensor computed with microplane theory averaging. state.damageTensor.trace() = state.normDmg

property densityScaling

(auto-updated) see GlobalStiffnessTimeStepper::targetDt.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((State)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

displ((State)arg1) Vector3 :

Displacement from reference position (pos - refPos)

property epsVolumetric

Volumetric strain around this body (unused for now)

property inertia

Inertia of associated body, in local coordinate system.

property isDamped

Damping in NewtonIntegrator can be deactivated for individual particles by setting this variable to FALSE. E.g. damping is inappropriate for particles in free flight under gravity but it might still be applicable to other particles in the same simulation.

property mass

Mass of this body

property normDmg

Average damage including already deleted contacts (it is really not damage, but 1-relResidualStrength now)

property numBrokenCohesive

Number of (cohesive) contacts that damaged completely

property numContacts

Number of contacts with this body

property ori

Current orientation.

property pos

Current position.

property refOri

Reference orientation

property refPos

Reference position

rot((State)arg1) Vector3 :

Rotation from reference orientation (as rotation vector)

property se3

Position and orientation as one object.

property stress

Stress tensor of the spherical particle (under assumption that particle volume = pi*r*r*r*4/3.) for packing fraction 0.62

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vel

Current linear velocity.

class yade.wrapper.JCFpmState(inherits ThermalState State Serializable)

JCFpm state information about each body.

property Cp

Heat capacity of the body

property Tcondition

indicates if particle is assigned dirichlet (constant temp) condition

property alpha

coefficient of thermal expansion

property angMom

Current angular momentum

property angVel

Current angular velocity

property blockedDOFs

Degress of freedom where linear/angular velocity will be always constant (equal to zero, or to an user-defined value), regardless of applied force/torque. String that may contain ‘xyzXYZ’ (translations and rotations).

property boundaryId

identifies if a particle is associated with constant temperature thrermal boundary condition

property damageIndex

Ratio of broken bonds over initial bonds. [-]

property delRadius

radius change due to thermal expansion

property densityScaling

(auto-updated) see GlobalStiffnessTimeStepper::targetDt.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((State)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

displ((State)arg1) Vector3 :

Displacement from reference position (pos - refPos)

property inertia

Inertia of associated body, in local coordinate system.

property isCavity

flag used for unbounding cavity bodies

property isDamped

Damping in NewtonIntegrator can be deactivated for individual particles by setting this variable to FALSE. E.g. damping is inappropriate for particles in free flight under gravity but it might still be applicable to other particles in the same simulation.

property joint

Indicates the number of joint surfaces to which the particle belongs (0-> no joint, 1->1 joint, etc..). [-]

property jointNormal1

Specifies the normal direction to the joint plane 1. Rk: the ideal here would be to create a vector of vector wich size is defined by the joint integer (as much joint normals as joints). However, it needs to make the pushback function works with python since joint detection is done through a python script. lines 272 to 312 of cpp file should therefore be adapted. [-]

property jointNormal2

Specifies the normal direction to the joint plane 2. [-]

property jointNormal3

Specifies the normal direction to the joint plane 3. [-]

property k

thermal conductivity of the body

property mass

Mass of this body

property nbBrokenBonds

Number of broken bonds. [-]

property nbInitBonds

Number of initial bonds. [-]

property oldTemp

change of temp (for thermal expansion)

property onJoint

Identifies if the particle is on a joint surface.

property ori

Current orientation.

property pos

Current position.

property refOri

Reference orientation

property refPos

Reference position

rot((State)arg1) Vector3 :

Rotation from reference orientation (as rotation vector)

property se3

Position and orientation as one object.

property stabilityCoefficient

sum of solid and fluid thermal resistivities for use in automatic timestep estimation

property stepFlux

flux during current step

property temp

temperature of the body

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vel

Current linear velocity.

class yade.wrapper.PartialSatState(inherits State Serializable)

Hertz mindlin state information about each body. Only active if partially saturated clay model is active.

property angMom

Current angular momentum

property angVel

Current angular velocity

property blockedDOFs

Degress of freedom where linear/angular velocity will be always constant (equal to zero, or to an user-defined value), regardless of applied force/torque. String that may contain ‘xyzXYZ’ (translations and rotations).

property densityScaling

(auto-updated) see GlobalStiffnessTimeStepper::targetDt.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((State)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

displ((State)arg1) Vector3 :

Displacement from reference position (pos - refPos)

property incidentCells

number of incident cells

property inertia

Inertia of associated body, in local coordinate system.

property isDamped

Damping in NewtonIntegrator can be deactivated for individual particles by setting this variable to FALSE. E.g. damping is inappropriate for particles in free flight under gravity but it might still be applicable to other particles in the same simulation.

property lastIncidentCells

number of incident cells

property mass

Mass of this body

property ori

Current orientation.

property pos

Current position.

property radiiChange

total change of particle radius due to swelling

property radiiOriginal

original particle radius prior to swelling

property refOri

Reference orientation

property refPos

Reference position

rot((State)arg1) Vector3 :

Rotation from reference orientation (as rotation vector)

property se3

Position and orientation as one object.

property suction

suction computed for particle (sum(sat of inc. cells)/num inc. cells)

property suctionSum

sum of suctions associated with incident cells

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vel

Current linear velocity.

property volumeOriginal

original particle volume stored for strain increments

class yade.wrapper.ThermalState(inherits State Serializable)

State containing quantities for thermal physics.

property Cp

Heat capacity of the body

property Tcondition

indicates if particle is assigned dirichlet (constant temp) condition

property alpha

coefficient of thermal expansion

property angMom

Current angular momentum

property angVel

Current angular velocity

property blockedDOFs

Degress of freedom where linear/angular velocity will be always constant (equal to zero, or to an user-defined value), regardless of applied force/torque. String that may contain ‘xyzXYZ’ (translations and rotations).

property boundaryId

identifies if a particle is associated with constant temperature thrermal boundary condition

property delRadius

radius change due to thermal expansion

property densityScaling

(auto-updated) see GlobalStiffnessTimeStepper::targetDt.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((State)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

displ((State)arg1) Vector3 :

Displacement from reference position (pos - refPos)

property inertia

Inertia of associated body, in local coordinate system.

property isCavity

flag used for unbounding cavity bodies

property isDamped

Damping in NewtonIntegrator can be deactivated for individual particles by setting this variable to FALSE. E.g. damping is inappropriate for particles in free flight under gravity but it might still be applicable to other particles in the same simulation.

property k

thermal conductivity of the body

property mass

Mass of this body

property oldTemp

change of temp (for thermal expansion)

property ori

Current orientation.

property pos

Current position.

property refOri

Reference orientation

property refPos

Reference position

rot((State)arg1) Vector3 :

Rotation from reference orientation (as rotation vector)

property se3

Position and orientation as one object.

property stabilityCoefficient

sum of solid and fluid thermal resistivities for use in automatic timestep estimation

property stepFlux

flux during current step

property temp

temperature of the body

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vel

Current linear velocity.

class yade.wrapper.WireState(inherits State Serializable)

Wire state information of each body.

None of that is used for computation (at least not now), only for post-processing.

property angMom

Current angular momentum

property angVel

Current angular velocity

property blockedDOFs

Degress of freedom where linear/angular velocity will be always constant (equal to zero, or to an user-defined value), regardless of applied force/torque. String that may contain ‘xyzXYZ’ (translations and rotations).

property densityScaling

(auto-updated) see GlobalStiffnessTimeStepper::targetDt.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((State)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

displ((State)arg1) Vector3 :

Displacement from reference position (pos - refPos)

property inertia

Inertia of associated body, in local coordinate system.

property isDamped

Damping in NewtonIntegrator can be deactivated for individual particles by setting this variable to FALSE. E.g. damping is inappropriate for particles in free flight under gravity but it might still be applicable to other particles in the same simulation.

property mass

Mass of this body

Number of broken links (e.g. number of wires connected to the body which are broken). [-]

property ori

Current orientation.

property pos

Current position.

property refOri

Reference orientation

property refPos

Reference position

rot((State)arg1) Vector3 :

Rotation from reference orientation (as rotation vector)

property se3

Position and orientation as one object.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vel

Current linear velocity.

Material

digraph Material {
        rankdir=RL;
        margin="0.2,0.05";
        "Material" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Material"];
        "CohesiveDeformableElementMaterial" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CohesiveDeformableElementMaterial"];
        "CohesiveDeformableElementMaterial" -> "Material" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "BubbleMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.BubbleMat"];
        "BubbleMat" -> "Material" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "FrictViscoMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FrictViscoMat"];
        "FrictViscoMat" -> "FrictMat" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ViscElMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ViscElMat"];
        "ViscElMat" -> "FrictMat" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "JCFpmMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.JCFpmMat"];
        "JCFpmMat" -> "FrictMat" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "InelastCohFrictMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.InelastCohFrictMat"];
        "InelastCohFrictMat" -> "FrictMat" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "LinIsoElastMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.LinIsoElastMat"];
        "LinIsoElastMat" -> "DeformableElementMaterial" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "LinCohesiveStiffPropDampElastMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.LinCohesiveStiffPropDampElastMat"];
        "LinCohesiveStiffPropDampElastMat" -> "LinCohesiveElasticMaterial" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CohFrictMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CohFrictMat"];
        "CohFrictMat" -> "FrictMat" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "WireMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.WireMat"];
        "WireMat" -> "FrictMat" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "MortarMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.MortarMat"];
        "MortarMat" -> "FrictMat" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PolyhedraMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PolyhedraMat"];
        "PolyhedraMat" -> "FrictMat" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ElastMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ElastMat"];
        "ElastMat" -> "Material" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "LinCohesiveElasticMaterial" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.LinCohesiveElasticMaterial"];
        "LinCohesiveElasticMaterial" -> "CohesiveDeformableElementMaterial" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ViscElCapMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ViscElCapMat"];
        "ViscElCapMat" -> "ViscElMat" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "DeformableElementMaterial" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.DeformableElementMaterial"];
        "DeformableElementMaterial" -> "Material" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CpmMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CpmMat"];
        "CpmMat" -> "FrictMat" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "LudingMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.LudingMat"];
        "LudingMat" -> "Material" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "FrictMatCDM" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FrictMatCDM"];
        "FrictMatCDM" -> "FrictMat" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "LinIsoRayleighDampElastMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.LinIsoRayleighDampElastMat"];
        "LinIsoRayleighDampElastMat" -> "LinIsoElastMat" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "FrictMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FrictMat"];
        "FrictMat" -> "ElastMat" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PartialSatMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PartialSatMat"];
        "PartialSatMat" -> "FrictMat" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of Material.

class yade.wrapper.Material(inherits Serializable)

Material properties of a body.

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.BubbleMat(inherits Material Serializable)

material for bubble interactions, for use with other Bubble classes

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property surfaceTension

The surface tension in the fluid surrounding the bubbles. The default value is that of water at 25 degrees Celcius.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.CohFrictMat(inherits FrictMat ElastMat Material Serializable)

Material description extending FrictMat with cohesive properties and rotational stiffnesses. For use e.g. with Law2_ScGeom6D_CohFrictPhys_CohesionMoment.

property alphaKr

Dimensionless rolling stiffness.

property alphaKtw

Dimensionless twist stiffness.

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property etaRoll

Dimensionless rolling (aka ‘bending’) strength. If negative, rolling moment will be elastic.

property etaTwist

Dimensionless twisting strength. If negative, twist moment will be elastic.

property fragile

does cohesion disappear when contact strength is exceeded?

property frictionAngle

Contact friction angle (in radians). Hint : use ‘radians(degreesValue)’ in python scripts.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property isCohesive

Whether this body can form possibly cohesive interactions (if true and depending on other parameters such as Ip2_CohFrictMat_CohFrictMat_CohFrictPhys.setCohesionNow).

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

property momentRotationLaw

Use bending/twisting moment at contact. The contact may have moments only if both bodies have this flag true. See Law2_ScGeom6D_CohFrictPhys_CohesionMoment.always_use_moment_law for details.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property normalCohesion

Tensile strength, homogeneous to a pressure. If negative the normal force is purely elastic.

property poisson

Poisson’s ratio or the ratio between shear and normal stiffness [-]. It has different meanings depending on the Ip functor.

property shearCohesion

Shear strength, homogeneous to a pressure. If negative the shear force is purely elastic.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property young

elastic modulus [Pa]. It has different meanings depending on the Ip functor.

class yade.wrapper.CohesiveDeformableElementMaterial(inherits Material Serializable)

Deformable Element Material.

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.CpmMat(inherits FrictMat ElastMat Material Serializable)

Concrete material, for use with other Cpm classes.

Note

Density is initialized to 4800 kgm⁻³automatically, which gives approximate 2800 kgm⁻³ on 0.5 density packing.

Concrete Particle Model (CPM)

CpmMat is particle material, Ip2_CpmMat_CpmMat_CpmPhys averages two particles’ materials, creating CpmPhys, which is then used in interaction resultion by Law2_ScGeom_CpmPhys_Cpm. CpmState is associated to CpmMat and keeps state defined on particles rather than interactions (such as number of completely damaged interactions).

The model is contained in externally defined macro CPM_MATERIAL_MODEL, which features damage in tension, plasticity in shear and compression and rate-dependence. For commercial reasons, rate-dependence and compression-plasticity is not present in reduced version of the model, used when CPM_MATERIAL_MODEL is not defined. The full model will be described in detail in my (Václav Šmilauer) thesis along with calibration procedures (rigidity, poisson’s ratio, compressive/tensile strength ratio, fracture energy, behavior under confinement, rate-dependent behavior).

Even the public model is useful enough to run simulation on concrete samples, such as uniaxial tension-compression test.

property damLaw

Law for damage evolution in uniaxial tension. 0 for linear stress-strain softening branch, 1 (default) for exponential damage evolution law

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property dmgRateExp

Exponent for normal viscosity function. [-]

property dmgTau

Characteristic time for normal viscosity. [s]

property epsCrackOnset

Limit elastic strain [-]

property equivStrainShearContrib

Coefficient of shear contribution to equivalent strain

property frictionAngle

Contact friction angle (in radians). Hint : use ‘radians(degreesValue)’ in python scripts.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property isoPrestress

Isotropic prestress of the whole specimen. [Pa]

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

property neverDamage

If true, no damage will occur (for testing only).

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property plRateExp

Exponent for visco-plasticity function. [-]

property plTau

Characteristic time for visco-plasticity. [s]

property poisson

Poisson’s ratio or the ratio between shear and normal stiffness [-]. It has different meanings depending on the Ip functor.

property relDuctility

relative ductility of bonds in normal direction

property sigmaT

Initial cohesion [Pa]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property young

elastic modulus [Pa]. It has different meanings depending on the Ip functor.

class yade.wrapper.DeformableElementMaterial(inherits Material Serializable)

Deformable Element Material.

property density

Density of the material.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.ElastMat(inherits Material Serializable)

Purely elastic material. The material parameters may have different meanings depending on the IPhysFunctor used : true Young and Poisson in Ip2_FrictMat_FrictMat_MindlinPhys, or contact stiffnesses in Ip2_FrictMat_FrictMat_FrictPhys.

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property poisson

Poisson’s ratio or the ratio between shear and normal stiffness [-]. It has different meanings depending on the Ip functor.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property young

elastic modulus [Pa]. It has different meanings depending on the Ip functor.

class yade.wrapper.FrictMat(inherits ElastMat Material Serializable)

Elastic material with contact friction. See also ElastMat.

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property frictionAngle

Contact friction angle (in radians). Hint : use ‘radians(degreesValue)’ in python scripts.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property poisson

Poisson’s ratio or the ratio between shear and normal stiffness [-]. It has different meanings depending on the Ip functor.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property young

elastic modulus [Pa]. It has different meanings depending on the Ip functor.

class yade.wrapper.FrictMatCDM(inherits FrictMat ElastMat Material Serializable)

Material to be used for extended Hertz-Mindlin contact law. Normal direction: parameters for Conical Damage Model (Harkness et al. 2016, Suhr & Six 2017). Tangential direction: parameters for stress dependent interparticle friction coefficient (Suhr & Six 2016). Both models can be switched on/off separately.

property alpha

[rad] angle of conical asperities, alpha in (0, pi/2)

property c1

[-] parameter of pressure dependent friction model c1, choose 0 for constant interparticle friction coefficient

property c2

[-] parameter of pressure dependent friction model c2, choose 0 for constant interparticle friction coefficient

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property frictionAngle

Contact friction angle (in radians). Hint : use ‘radians(degreesValue)’ in python scripts.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property poisson

Poisson’s ratio or the ratio between shear and normal stiffness [-]. It has different meanings depending on the Ip functor.

property sigmaMax

>0 [Pa] max compressive strength of material, choose 1e99 to switch off conical damage model

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property young

elastic modulus [Pa]. It has different meanings depending on the Ip functor.

class yade.wrapper.FrictViscoMat(inherits FrictMat ElastMat Material Serializable)

Material for use with the FrictViscoPM classes

property betan

Fraction of the viscous damping coefficient in normal direction equal to \(\frac{c_{n}}{C_{n,crit}}\).

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property frictionAngle

Contact friction angle (in radians). Hint : use ‘radians(degreesValue)’ in python scripts.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property poisson

Poisson’s ratio or the ratio between shear and normal stiffness [-]. It has different meanings depending on the Ip functor.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property young

elastic modulus [Pa]. It has different meanings depending on the Ip functor.

class yade.wrapper.InelastCohFrictMat(inherits FrictMat ElastMat Material Serializable)
property alphaKr

Dimensionless coefficient used for the rolling stiffness.

property alphaKtw

Dimensionless coefficient used for the twist stiffness.

property compressionModulus

Compresion elasticity modulus

property creepBending

Bending creeping coefficient. Usual values between 0 and 1.

property creepTension

Tension/compression creeping coefficient. Usual values between 0 and 1.

property creepTwist

Twist creeping coefficient. Usual values between 0 and 1.

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property epsilonMaxCompression

Maximal plastic strain compression

property epsilonMaxTension

Maximal plastic strain tension

property etaMaxBending

Maximal plastic bending strain

property etaMaxTwist

Maximal plastic twist strain

property frictionAngle

Contact friction angle (in radians). Hint : use ‘radians(degreesValue)’ in python scripts.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property nuBending

Bending elastic stress limit

property nuTwist

Twist elastic stress limit

property poisson

Poisson’s ratio or the ratio between shear and normal stiffness [-]. It has different meanings depending on the Ip functor.

property shearCohesion

Shear elastic stress limit

property shearModulus

shear elasticity modulus

property sigmaCompression

Compression elastic stress limit

property sigmaTension

Tension elastic stress limit

property tensionModulus

Tension elasticity modulus

property unloadBending

Bending plastic unload coefficient. Usual values between 0 and +infinity.

property unloadTension

Tension/compression plastic unload coefficient. Usual values between 0 and +infinity.

property unloadTwist

Twist plastic unload coefficient. Usual values between 0 and +infinity.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property young

elastic modulus [Pa]. It has different meanings depending on the Ip functor.

class yade.wrapper.JCFpmMat(inherits FrictMat ElastMat Material Serializable)

Possibly jointed, cohesive frictional material, for use with other JCFpm classes

property cohesion

Defines the maximum admissible tangential force in shear, for Fn=0, in the matrix (FsMax = cohesion * crossSection). [Pa]

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property frictionAngle

Contact friction angle (in radians). Hint : use ‘radians(degreesValue)’ in python scripts.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property jointCohesion

Defines the maximum admissible tangential force in shear, for Fn=0, on the joint surface. [Pa]

property jointDilationAngle

Defines the dilatancy of the joint surface (only valid for smooth contact logic). [rad]

property jointFrictionAngle

Defines Coulomb friction on the joint surface. [rad]

property jointNormalStiffness

Defines the normal stiffness on the joint surface. [Pa/m]

property jointShearStiffness

Defines the shear stiffness on the joint surface. [Pa/m]

property jointTensileStrength

Defines the maximum admissible normal force in traction on the joint surface. [Pa]

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property poisson

Poisson’s ratio or the ratio between shear and normal stiffness [-]. It has different meanings depending on the Ip functor.

property residualFrictionAngle

Defines the residual friction angle (when contacts are not cohesive). residualFrictionAngle=frictionAngle if not specified. [rad]

property tensileStrength

Defines the maximum admissible normal force in traction in the matrix (FnMax = tensileStrength * crossSection). [Pa]

property type

If particles of two different types interact, it will be with friction only (no cohesion).[-]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property young

elastic modulus [Pa]. It has different meanings depending on the Ip functor.

class yade.wrapper.LinCohesiveElasticMaterial(inherits CohesiveDeformableElementMaterial Material Serializable)

Linear Isotropic Elastic material

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property poissonratio

Poisson ratio. Initially aluminium.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property youngmodulus

Young’s modulus. Initially aluminium.

class yade.wrapper.LinCohesiveStiffPropDampElastMat(inherits LinCohesiveElasticMaterial CohesiveDeformableElementMaterial Material Serializable)

Elastic material with Rayleigh Damping.

property alpha

Mass propotional damping constant of Rayleigh Damping.

property beta

Stiffness propotional damping constant of Rayleigh Damping.

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property poissonratio

Poisson ratio. Initially aluminium.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property youngmodulus

Young’s modulus. Initially aluminium.

class yade.wrapper.LinIsoElastMat(inherits DeformableElementMaterial Material Serializable)

Linear Isotropic Elastic material

property density

Density of the material.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property poissonratio

Poisson ratio. Initially aluminium.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property youngmodulus

Young’s modulus. Initially aluminium.

class yade.wrapper.LinIsoRayleighDampElastMat(inherits LinIsoElastMat DeformableElementMaterial Material Serializable)

Elastic material with Rayleigh Damping.

property alpha

Mass propotional damping constant of Rayleigh Damping.

property beta

Stiffness propotional damping constant of Rayleigh Damping.

property density

Density of the material.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property poissonratio

Poisson ratio. Initially aluminium.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property youngmodulus

Young’s modulus. Initially aluminium.

class yade.wrapper.LudingMat(inherits Material Serializable)

Material for simple Luding`s model of contact [Luding2008] ,[Singh2013]_ .

property G0

Viscous damping

property PhiF

Dimensionless plasticity depth

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property frictionAngle

Friction angle [rad]

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property k1

Slope of loading plastic branch

property kc

Slope of irreversible, tensile adhesive branch

property kp

Slope of unloading and reloading limit elastic branch

property ks

Shear stiffness

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.MortarMat(inherits FrictMat ElastMat Material Serializable)

Material for mortar interface, used in Ip2_MortarMat_MortarMat_MortarPhys and Law2_ScGeom_MortarPhys_Lourenco. Default values according to

property cohesion

cohesion [Pa]

property compressiveStrength

compressiveStrength [Pa]

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property ellAspect

aspect ratio of elliptical ‘cap’. Value >1 means the ellipse is longer along normal stress axis.

property frictionAngle

Friction angle

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

property neverDamage

If true, interactions remain elastic regardless stresses

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property poisson

Shear to normal modulus ratio

property tensileStrength

tensileStrength [Pa]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property young

Normal elastic modulus [Pa]

class yade.wrapper.PartialSatMat(inherits FrictMat ElastMat Material Serializable)

Material used for PartialSatClayEngine. Necessary for the custom PartialSatState.

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property frictionAngle

Contact friction angle (in radians). Hint : use ‘radians(degreesValue)’ in python scripts.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property num

Particle number

property poisson

Poisson’s ratio or the ratio between shear and normal stiffness [-]. It has different meanings depending on the Ip functor.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property young

elastic modulus [Pa]. It has different meanings depending on the Ip functor.

class yade.wrapper.PolyhedraMat(inherits FrictMat ElastMat Material Serializable)

Elastic material with Coulomb friction.

property IsSplitable

To be splitted … or not

property Wei_P

Weibull Formulation, failure probability, P, [Gladky2017].

property Wei_S0

Weibull Formulation, Sigma0, Pa, (if negative - disabled), [Gladky2017]

property Wei_V0

Weibull Formulation, V0, m^3, representative volume, [Gladky2017].

property Wei_m

Weibull Formulation, Weibull modulus, m, (if negative - disabled), [Gladky2017]

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property frictionAngle

Contact friction angle (in radians). Hint : use ‘radians(degreesValue)’ in python scripts.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property poisson

Poisson’s ratio or the ratio between shear and normal stiffness [-]. It has different meanings depending on the Ip functor.

property sigmaCD

Mohr-Coulomb failure criterium SigmaCD, Pa, maximal compressive strength (if negative - disabled), [Gladky2017]

property sigmaCZ

Mohr-Coulomb failure criterium SigmaCZ, Pa, maximal tensile strength (if negative - disabled), [Gladky2017]

property strength

Stress at which polyhedra of volume 4/3*pi [mm] breaks.

property strengthTau

Tangential stress at which polyhedra of volume 4/3*pi [mm] breaks.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property young

Young modulus

class yade.wrapper.ViscElCapMat(inherits ViscElMat FrictMat ElastMat Material Serializable)

Material for extended viscoelastic model of contact with capillary parameters.

property Capillar

True, if capillar forces need to be added.

property CapillarType

Different types of capillar interaction: Willett_numeric, Willett_analytic [Willett2000] , Weigert [Weigert1999] , Rabinovich [Rabinov2005] , Lambert (simplified, corrected Rabinovich model) [Lambert2008]

property Vb

Liquid bridge volume [m^3]

property cn

Normal viscous constant. Attention, this parameter cannot be set if tc, en or es is defined!

property cs

Shear viscous constant. Attention, this parameter cannot be set if tc, en or es is defined!

property dcap

Damping coefficient for the capillary phase [-]

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property en

Restitution coefficient in normal direction

property et

Restitution coefficient in tangential direction

property frictionAngle

Contact friction angle (in radians). Hint : use ‘radians(degreesValue)’ in python scripts.

property gamma

Surface tension [N/m]

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property kn

Normal elastic stiffness. Attention, this parameter cannot be set if tc, en or es is defined!

property ks

Shear elastic stiffness. Attention, this parameter cannot be set if tc, en or es is defined!

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

property lubrication

option to apply lubrication forces when material is defined from young, poisson and en (restitution coefficient).

property mR

Rolling resistance, see [Zhou1999536].

property mRtype

Rolling resistance type, see [Zhou1999536]. mRtype=1 - equation (3) in [Zhou1999536]; mRtype=2 - equation (4) in [Zhou1999536].

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property poisson

Poisson’s ratio or the ratio between shear and normal stiffness [-]. It has different meanings depending on the Ip functor.

property roughnessScale

if lubrication is activated, roughness scale considered for the particles to evaluate the effective restitution coefficient.

property tc

Contact time

property theta

Contact angle [°]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property viscoDyn

if lubrication is activated, surrounding fluid dynamic viscosity considered to evaluate the effective restitution coefficient as a function of the local Stokes number of the collision.

property young

elastic modulus [Pa]. It has different meanings depending on the Ip functor.

class yade.wrapper.ViscElMat(inherits FrictMat ElastMat Material Serializable)

Material for simple viscoelastic model of contact from analytical solution of a pair spheres interaction problem [Pournin2001] .

property cn

Normal viscous constant. Attention, this parameter cannot be set if tc, en or es is defined!

property cs

Shear viscous constant. Attention, this parameter cannot be set if tc, en or es is defined!

property density

Density of the material [kg/m³]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property en

Restitution coefficient in normal direction

property et

Restitution coefficient in tangential direction

property frictionAngle

Contact friction angle (in radians). Hint : use ‘radians(degreesValue)’ in python scripts.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property kn

Normal elastic stiffness. Attention, this parameter cannot be set if tc, en or es is defined!

property ks

Shear elastic stiffness. Attention, this parameter cannot be set if tc, en or es is defined!

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

property lubrication

option to apply lubrication forces when material is defined from young, poisson and en (restitution coefficient).

property mR

Rolling resistance, see [Zhou1999536].

property mRtype

Rolling resistance type, see [Zhou1999536]. mRtype=1 - equation (3) in [Zhou1999536]; mRtype=2 - equation (4) in [Zhou1999536].

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property poisson

Poisson’s ratio or the ratio between shear and normal stiffness [-]. It has different meanings depending on the Ip functor.

property roughnessScale

if lubrication is activated, roughness scale considered for the particles to evaluate the effective restitution coefficient.

property tc

Contact time

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property viscoDyn

if lubrication is activated, surrounding fluid dynamic viscosity considered to evaluate the effective restitution coefficient as a function of the local Stokes number of the collision.

property young

elastic modulus [Pa]. It has different meanings depending on the Ip functor.

class yade.wrapper.WireMat(inherits FrictMat ElastMat Material Serializable)

Material for use with the Wire classes. In conjunction with the corresponding functors it can be used to model steel wire meshes [Thoeni2014], geotextiles [Cheng2016] and more.

property as

Cross-section area of a single wire used to transform stress into force. [m²]

property density

Density of the material [kg/m³]

property diameter

Diameter of the single wire in [m] (the diameter is used to compute the cross-section area of the wire).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Material)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property frictionAngle

Contact friction angle (in radians). Hint : use ‘radians(degreesValue)’ in python scripts.

property id

Numeric id of this material; is non-negative only if this Material is shared (i.e. in O.materials), -1 otherwise. This value is set automatically when the material is inserted to the simulation via O.materials.append. (This id was necessary since before boost::serialization was used, shared pointers were not tracked properly; it might disappear in the future)

property isDoubleTwist

Type of the mesh. If true two particles of the same material which body ids differ by one will be considered as double-twisted interaction.

property label

Textual identifier for this material; can be used for shared materials lookup in MaterialContainer.

property lambdaEps

Parameter between 0 and 1 to reduce strain at failure of a double-twisted wire (as used by [Bertrand2008]). [-]

property lambdaF

Parameter between 0 and 1 introduced by [Thoeni2013] which defines where the shifted force-displacement curve intersects with the new initial stiffness: \(F^*=\lambda_F F_{\text{elastic}}\). [-]

property lambdak

Parameter between 0 and 1 to compute the elastic stiffness of a double-twisted wire (as used by [Bertrand2008]): \(k^D=2(\lambda_k k_h + (1-\lambda_k)k^S)\). [-]

property lambdau

Parameter between 0 and 1 introduced by [Thoeni2013] which defines the maximum shift of the force-displacement curve in order to take an additional initial elongation (e.g. wire distortion/imperfections, slipping, system flexibility) into account: \(\Delta l^*=\lambda_u l_0 \text{rnd(seed)}\). [-]

newAssocState((Material)arg1) State :

Return new State instance, which is associated with this Material. Some materials have special requirement on Body::state type and calling this function when the body is created will ensure that they match. (This is done automatically if you use utils.sphere, … functions from python).

property poisson

Poisson’s ratio or the ratio between shear and normal stiffness [-]. It has different meanings depending on the Ip functor.

property seed

Integer used to initialize the random number generator for the calculation of the distortion. If the integer is equal to 0 a internal seed number based on the time is computed. [-]

property strainStressValues

Piecewise linear definition of the stress-strain curve by set of points (strain[-]>0,stress[Pa]>0) for one single wire. Tension only is considered and the point (0,0) is not needed! NOTE: Vector needs to be initialized!

property strainStressValuesDT

Piecewise linear definition of the stress-strain curve by set of points (strain[-]>0,stress[Pa]>0) for the double twist. Tension only is considered and the point (0,0) is not needed! If this value is given the calculation will be based on two different stress-strain curves without considering the parameter introduced by [Bertrand2008] (see [Thoeni2013]).

property type

Three different types are considered:

0

Corresponds to Bertrand’s approach (see [Bertrand2008]): only one stress-strain curve is used

1

New approach: two separate stress-strain curves can be used (see [Thoeni2013])

2

New approach with stochastically distorted contact model: two separate stress-strain curves with changed initial stiffness and horizontal shift (shift is random if \(\text{seed}\geq0\), for more details see [Thoeni2013])

By default the type is 0.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property young

elastic modulus [Pa]. It has different meanings depending on the Ip functor.

Bound

digraph Bound {
        rankdir=RL;
        margin="0.2,0.05";
        "Bound" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bound"];
        "Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Aabb"];
        "Aabb" -> "Bound" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of Bound.

class yade.wrapper.Bound(inherits Serializable)

Object bounding part of space taken by associated body; might be larger, used to optimalize collision detection

property color

Color for rendering this object

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Bound)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property lastUpdateIter

record iteration of last reference position update (auto-updated)

property max

Upper corner of box containing this bound (and the Body as well)

property min

Lower corner of box containing this bound (and the Body as well)

property refPos

Reference position, updated at current body position each time the bound dispatcher update bounds (auto-updated)

property sweepLength

The length used to increase the bounding boxe size, can be adjusted on the basis of previous displacement if BoundDispatcher::targetInterv>0. (auto-updated)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Aabb(inherits Bound Serializable)

Axis-aligned bounding box, for use with InsertionSortCollider. (This class is quasi-redundant since min,max are already contained in Bound itself. That might change at some point, though.)

property color

Color for rendering this object

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((Bound)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property lastUpdateIter

record iteration of last reference position update (auto-updated)

property max

Upper corner of box containing this bound (and the Body as well)

property min

Lower corner of box containing this bound (and the Body as well)

property refPos

Reference position, updated at current body position each time the bound dispatcher update bounds (auto-updated)

property sweepLength

The length used to increase the bounding boxe size, can be adjusted on the basis of previous displacement if BoundDispatcher::targetInterv>0. (auto-updated)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

Interactions

Interaction

class yade.wrapper.Interaction(inherits Serializable)

Interaction between pair of bodies.

property cellDist

Distance of bodies in cell size units, if using periodic boundary conditions; id2 is shifted by this number of cells from its State::pos coordinates for this interaction to exist. Assigned by the collider.

Warning

(internal) cellDist must survive Interaction::reset(), it is only initialized in ctor. Interaction that was cancelled by the constitutive law, was reset() and became only potential must have the period information if the geometric functor again makes it real. Good to know after few days of debugging that :-)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property geom

Geometry part of the interaction.

property id1

Id of the first body in this interaction.

property id2

Id of the second body in this interaction.

property isActive

True if this interaction is active. Otherwise the forces from this interaction will not be taken into account. True by default.

property isReal

True if this interaction has both geom and phys; False otherwise.

property iterBorn

Step number at which the interaction was added to simulation.

property iterMadeReal

Step number at which the interaction was fully (in the sense of geom and phys) created. (Should be touched only by IPhysDispatcher and InteractionLoop, therefore they are made friends of Interaction

property phys

Physical (material) part of the interaction.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

IGeom

digraph IGeom {
        rankdir=RL;
        margin="0.2,0.05";
        "IGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.IGeom"];
        "GridNodeGeom6D" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GridNodeGeom6D"];
        "GridNodeGeom6D" -> "ScGeom6D" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ScGeom"];
        "ScGeom" -> "GenericSpheresContact" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "TTetraSimpleGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TTetraSimpleGeom"];
        "TTetraSimpleGeom" -> "IGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "GenericSpheresContact" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GenericSpheresContact"];
        "GenericSpheresContact" -> "IGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CylScGeom6D" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CylScGeom6D"];
        "CylScGeom6D" -> "ScGeom6D" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ScGeom6D" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ScGeom6D"];
        "ScGeom6D" -> "ScGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "TTetraGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TTetraGeom"];
        "TTetraGeom" -> "IGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "MultiScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.MultiScGeom"];
        "MultiScGeom" -> "IGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ChCylGeom6D" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ChCylGeom6D"];
        "ChCylGeom6D" -> "ScGeom6D" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.L6Geom"];
        "L6Geom" -> "L3Geom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ScGridCoGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ScGridCoGeom"];
        "ScGridCoGeom" -> "ScGeom6D" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "GridCoGridCoGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GridCoGridCoGeom"];
        "GridCoGridCoGeom" -> "ScGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PolyhedraGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PolyhedraGeom"];
        "PolyhedraGeom" -> "IGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "VolumeGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.VolumeGeom"];
        "VolumeGeom" -> "IGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "L3Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.L3Geom"];
        "L3Geom" -> "GenericSpheresContact" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CylScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CylScGeom"];
        "CylScGeom" -> "ScGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of IGeom.

class yade.wrapper.IGeom(inherits Serializable)

Geometrical configuration of interaction

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.ChCylGeom6D(inherits ScGeom6D ScGeom GenericSpheresContact IGeom Serializable)

Test

property bending

Bending at contact as a vector defining axis of rotation and angle (angle=norm).

property contactPoint

some reference point for the interaction (usually in the middle). (auto-computed)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

incidentVel((ScGeom)arg1, (Interaction)i[, (bool)avoidGranularRatcheting=True]) Vector3 :

Return incident velocity of the interaction (see also Ig2_Sphere_Sphere_ScGeom.avoidGranularRatcheting for explanation of the ratcheting argument).

property initialOrientation1

Orientation of body 1 one at initialisation time (auto-updated)

property initialOrientation2

Orientation of body 2 one at initialisation time (auto-updated)

property normal

Unit vector oriented along the interaction, from particle #1, towards particle #2. (auto-updated)

property penetrationDepth

Penetration distance of spheres (positive if overlapping)

property refR1

Reference radius of particle #1. (auto-computed)

property refR2

Reference radius of particle #2. (auto-computed)

relAngVel((ScGeom)arg1, (Interaction)i) Vector3 :

Return relative angular velocity of the interaction.

property shearInc

Shear displacement increment in the last step

property twist

Elastic twist angle (around normal axis) of the contact.

property twistCreep

Stored creep, substracted from total relative rotation for computation of elastic moment (auto-updated)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.CylScGeom(inherits ScGeom GenericSpheresContact IGeom Serializable)

Geometry of a cylinder-sphere contact.

property contactPoint

some reference point for the interaction (usually in the middle). (auto-computed)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property end

position of 2nd node (auto-updated)

property id3

id of next chained cylinder (auto-updated)

incidentVel((ScGeom)arg1, (Interaction)i[, (bool)avoidGranularRatcheting=True]) Vector3 :

Return incident velocity of the interaction (see also Ig2_Sphere_Sphere_ScGeom.avoidGranularRatcheting for explanation of the ratcheting argument).

property isDuplicate

this flag is turned true (1) automatically if the contact is shared between two chained cylinders. A duplicated interaction will be skipped once by the constitutive law, so that only one contact at a time is effective. If isDuplicate=2, it means one of the two duplicates has no longer geometric interaction, and should be erased by the constitutive laws.

property normal

Unit vector oriented along the interaction, from particle #1, towards particle #2. (auto-updated)

property onNode

contact on node?

property penetrationDepth

Penetration distance of spheres (positive if overlapping)

property refR1

Reference radius of particle #1. (auto-computed)

property refR2

Reference radius of particle #2. (auto-computed)

relAngVel((ScGeom)arg1, (Interaction)i) Vector3 :

Return relative angular velocity of the interaction.

property relPos

position of the contact on the cylinder (0: node-, 1:node+) (auto-updated)

property shearInc

Shear displacement increment in the last step

property start

position of 1st node (auto-updated)

property trueInt

Defines the body id of the cylinder where the contact is real, when CylScGeom::isDuplicate>0.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.CylScGeom6D(inherits ScGeom6D ScGeom GenericSpheresContact IGeom Serializable)

Class representing geometry of two bodies in contact. The contact has 6 DOFs (normal, 2×shear, twist, 2xbending) and uses ScGeom incremental algorithm for updating shear.

property bending

Bending at contact as a vector defining axis of rotation and angle (angle=norm).

property contactPoint

some reference point for the interaction (usually in the middle). (auto-computed)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property end

position of 2nd node (auto-updated)

property id3

id of next chained cylinder (auto-updated)

incidentVel((ScGeom)arg1, (Interaction)i[, (bool)avoidGranularRatcheting=True]) Vector3 :

Return incident velocity of the interaction (see also Ig2_Sphere_Sphere_ScGeom.avoidGranularRatcheting for explanation of the ratcheting argument).

property initialOrientation1

Orientation of body 1 one at initialisation time (auto-updated)

property initialOrientation2

Orientation of body 2 one at initialisation time (auto-updated)

property isDuplicate

this flag is turned true (1) automatically if the contact is shared between two chained cylinders. A duplicated interaction will be skipped once by the constitutive law, so that only one contact at a time is effective. If isDuplicate=2, it means one of the two duplicates has no longer geometric interaction, and should be erased by the constitutive laws.

property normal

Unit vector oriented along the interaction, from particle #1, towards particle #2. (auto-updated)

property onNode

contact on node?

property penetrationDepth

Penetration distance of spheres (positive if overlapping)

property refR1

Reference radius of particle #1. (auto-computed)

property refR2

Reference radius of particle #2. (auto-computed)

relAngVel((ScGeom)arg1, (Interaction)i) Vector3 :

Return relative angular velocity of the interaction.

property relPos

position of the contact on the cylinder (0: node-, 1:node+) (auto-updated)

property shearInc

Shear displacement increment in the last step

property start

position of 1st node (auto-updated)

property trueInt

Defines the body id of the cylinder where the contact is real, when CylScGeom::isDuplicate>0.

property twist

Elastic twist angle (around normal axis) of the contact.

property twistCreep

Stored creep, substracted from total relative rotation for computation of elastic moment (auto-updated)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GenericSpheresContact(inherits IGeom Serializable)

Class uniting ScGeom and L3Geom, for the purposes of GlobalStiffnessTimeStepper. (It might be removed in the future). Do not use this class directly.

property contactPoint

some reference point for the interaction (usually in the middle). (auto-computed)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property normal

Unit vector oriented along the interaction, from particle #1, towards particle #2. (auto-updated)

property refR1

Reference radius of particle #1. (auto-computed)

property refR2

Reference radius of particle #2. (auto-computed)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GridCoGridCoGeom(inherits ScGeom GenericSpheresContact IGeom Serializable)

Geometry of a GridConnection-GridConnection contact.

property contactPoint

some reference point for the interaction (usually in the middle). (auto-computed)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

incidentVel((ScGeom)arg1, (Interaction)i[, (bool)avoidGranularRatcheting=True]) Vector3 :

Return incident velocity of the interaction (see also Ig2_Sphere_Sphere_ScGeom.avoidGranularRatcheting for explanation of the ratcheting argument).

property normal

Unit vector oriented along the interaction, from particle #1, towards particle #2. (auto-updated)

property penetrationDepth

Penetration distance of spheres (positive if overlapping)

property refR1

Reference radius of particle #1. (auto-computed)

property refR2

Reference radius of particle #2. (auto-computed)

relAngVel((ScGeom)arg1, (Interaction)i) Vector3 :

Return relative angular velocity of the interaction.

property relPos1

position of the contact on the first connection (0: node-, 1:node+) (auto-updated)

property relPos2

position of the contact on the first connection (0: node-, 1:node+) (auto-updated)

property shearInc

Shear displacement increment in the last step

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GridNodeGeom6D(inherits ScGeom6D ScGeom GenericSpheresContact IGeom Serializable)

Geometry of a GridNode-GridNode contact. Inherits almost everything from ScGeom6D.

property bending

Bending at contact as a vector defining axis of rotation and angle (angle=norm).

property connectionBody

Reference to the GridNode Body who is linking the two GridNodes.

property contactPoint

some reference point for the interaction (usually in the middle). (auto-computed)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

incidentVel((ScGeom)arg1, (Interaction)i[, (bool)avoidGranularRatcheting=True]) Vector3 :

Return incident velocity of the interaction (see also Ig2_Sphere_Sphere_ScGeom.avoidGranularRatcheting for explanation of the ratcheting argument).

property initialOrientation1

Orientation of body 1 one at initialisation time (auto-updated)

property initialOrientation2

Orientation of body 2 one at initialisation time (auto-updated)

property normal

Unit vector oriented along the interaction, from particle #1, towards particle #2. (auto-updated)

property penetrationDepth

Penetration distance of spheres (positive if overlapping)

property refR1

Reference radius of particle #1. (auto-computed)

property refR2

Reference radius of particle #2. (auto-computed)

relAngVel((ScGeom)arg1, (Interaction)i) Vector3 :

Return relative angular velocity of the interaction.

property shearInc

Shear displacement increment in the last step

property twist

Elastic twist angle (around normal axis) of the contact.

property twistCreep

Stored creep, substracted from total relative rotation for computation of elastic moment (auto-updated)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.L3Geom(inherits GenericSpheresContact IGeom Serializable)

Geometry of contact given in local coordinates with 3 degress of freedom: normal and two in shear plane. [experimental]

property F

Applied force in local coordinates [debugging only, will be removed]

property contactPoint

some reference point for the interaction (usually in the middle). (auto-computed)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property normal

Unit vector oriented along the interaction, from particle #1, towards particle #2. (auto-updated)

property refR1

Reference radius of particle #1. (auto-computed)

property refR2

Reference radius of particle #2. (auto-computed)

property trsf

Transformation (rotation) from global to local coordinates. (the translation part is in GenericSpheresContact.contactPoint)

property u

Displacement components, in local coordinates. (auto-updated)

property u0

Zero displacement value; u0 should be always subtracted from the geometrical displacement u computed by appropriate IGeomFunctor, resulting in u. This value can be changed for instance

  1. by IGeomFunctor, e.g. to take in account large shear displacement value unrepresentable by underlying geomeric algorithm based on quaternions)

  2. by LawFunctor, to account for normal equilibrium position different from zero geometric overlap (set once, just after the interaction is created)

  3. by LawFunctor to account for plastic slip.

Note

Never set an absolute value of u0, only increment, since both IGeomFunctor and LawFunctor use it. If you need to keep track of plastic deformation, store it in IPhys isntead (this might be changed: have u0 for LawFunctor exclusively, and a separate value stored (when that is needed) inside classes deriving from L3Geom.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.L6Geom(inherits L3Geom GenericSpheresContact IGeom Serializable)

Geometric of contact in local coordinates with 6 degrees of freedom. [experimental]

property F

Applied force in local coordinates [debugging only, will be removed]

property contactPoint

some reference point for the interaction (usually in the middle). (auto-computed)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property normal

Unit vector oriented along the interaction, from particle #1, towards particle #2. (auto-updated)

property phi

Rotation components, in local coordinates. (auto-updated)

property phi0

Zero rotation, should be always subtracted from phi to get the value. See L3Geom.u0.

property refR1

Reference radius of particle #1. (auto-computed)

property refR2

Reference radius of particle #2. (auto-computed)

property trsf

Transformation (rotation) from global to local coordinates. (the translation part is in GenericSpheresContact.contactPoint)

property u

Displacement components, in local coordinates. (auto-updated)

property u0

Zero displacement value; u0 should be always subtracted from the geometrical displacement u computed by appropriate IGeomFunctor, resulting in u. This value can be changed for instance

  1. by IGeomFunctor, e.g. to take in account large shear displacement value unrepresentable by underlying geomeric algorithm based on quaternions)

  2. by LawFunctor, to account for normal equilibrium position different from zero geometric overlap (set once, just after the interaction is created)

  3. by LawFunctor to account for plastic slip.

Note

Never set an absolute value of u0, only increment, since both IGeomFunctor and LawFunctor use it. If you need to keep track of plastic deformation, store it in IPhys isntead (this might be changed: have u0 for LawFunctor exclusively, and a separate value stored (when that is needed) inside classes deriving from L3Geom.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.MultiScGeom(inherits IGeom Serializable)

A set of ScGeom for describing the kinematics of an interaction with multiple contact points between two LevelSet bodies, as a set of ScGeom items in contacts. To combine with MultiFrictPhys and associated classes.

property contacts

The actual list of ScGeom items corresponding to the different contact points.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property nodesIds

List of surface nodes (on id1 if that body is smaller – or equal – in volume, or id2 otherwise) making contacts. Contact point for a node of index nodesIds[i] has kinematic properties stored in contacts[i]. Should be equal to MultiFrictPhys.nodesIds by design

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.PolyhedraGeom(inherits IGeom Serializable)

Geometry of interaction between 2 Polyhedra, including volumetric characteristics

property contactPoint

Contact point (global coords), centroid of the overlapping polyhedron

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property equivalentCrossSection

Cross-section area of the overlap (perpendicular to the normal) - not used

property equivalentPenetrationDepth

volume / equivalentCrossSection - not used

property normal

Normal direction of the interaction

property orthonormal_axis

property penetrationVolume

Volume of overlap [m³]

property shearInc

Shear displacement increment in the last step

property twist_axis

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.ScGeom(inherits GenericSpheresContact IGeom Serializable)

Class representing geometry of a contact point between two bodies. It is more general than sphere-sphere contact even though it is primarily focused on spheres contact interactions (reason for the ‘Sc’ naming); it is also used for representing contacts of a Sphere with non-spherical bodies (Facet, Plane, Box, ChainedCylinder), or between two non-spherical bodies (ChainedCylinder). The contact has 3 DOFs (normal and 2×shear) and uses incremental algorithm for updating shear.

We use symbols \(\vec{x}\), \(\vec{v}\), \(\vec{\omega}\) respectively for position, linear and angular velocities (all in global coordinates) and \(r\) for particles radii; subscripted with 1 or 2 to distinguish 2 spheres in contact. Then we define branch length and unit contact normal

\[l=||\vec{x}_2-\vec{x}_1||, \vec{n}=\frac{\vec{x}_2-\vec{x}_1}{||\vec{x}_2-\vec{x}_1||}\]

The relative velocity of the spheres is then

\[\vec{v}_{12}=\frac{r_1+r_2}{l}(\vec{v}_2-\vec{v}_1) -(r_2 \vec{\omega}_2 + r_1\vec{\omega}_1)\times\vec{n}\]

where the fraction multiplying translational velocities is to make the definition objective and avoid ratcheting effects (see Ig2_Sphere_Sphere_ScGeom.avoidGranularRatcheting). The shear component is

\[\vec{v}_{12}^s=\vec{v}_{12}-(\vec{n}\cdot\vec{v}_{12})\vec{n}.\]

Tangential displacement increment over last step then reads

\[\Delta\vec{x}_{12}^s=\Delta t \vec{v}_{12}^s.\]
property contactPoint

some reference point for the interaction (usually in the middle). (auto-computed)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

incidentVel((ScGeom)arg1, (Interaction)i[, (bool)avoidGranularRatcheting=True]) Vector3 :

Return incident velocity of the interaction (see also Ig2_Sphere_Sphere_ScGeom.avoidGranularRatcheting for explanation of the ratcheting argument).

property normal

Unit vector oriented along the interaction, from particle #1, towards particle #2. (auto-updated)

property penetrationDepth

Penetration distance of spheres (positive if overlapping)

property refR1

Reference radius of particle #1. (auto-computed)

property refR2

Reference radius of particle #2. (auto-computed)

relAngVel((ScGeom)arg1, (Interaction)i) Vector3 :

Return relative angular velocity of the interaction.

property shearInc

Shear displacement increment in the last step

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.ScGeom6D(inherits ScGeom GenericSpheresContact IGeom Serializable)

Class representing geometry of two bodies in contact. The contact has 6 DOFs (normal, 2×shear, twist, 2xbending) and uses ScGeom incremental algorithm for updating shear.

property bending

Bending at contact as a vector defining axis of rotation and angle (angle=norm).

property contactPoint

some reference point for the interaction (usually in the middle). (auto-computed)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

incidentVel((ScGeom)arg1, (Interaction)i[, (bool)avoidGranularRatcheting=True]) Vector3 :

Return incident velocity of the interaction (see also Ig2_Sphere_Sphere_ScGeom.avoidGranularRatcheting for explanation of the ratcheting argument).

property initialOrientation1

Orientation of body 1 one at initialisation time (auto-updated)

property initialOrientation2

Orientation of body 2 one at initialisation time (auto-updated)

property normal

Unit vector oriented along the interaction, from particle #1, towards particle #2. (auto-updated)

property penetrationDepth

Penetration distance of spheres (positive if overlapping)

property refR1

Reference radius of particle #1. (auto-computed)

property refR2

Reference radius of particle #2. (auto-computed)

relAngVel((ScGeom)arg1, (Interaction)i) Vector3 :

Return relative angular velocity of the interaction.

property shearInc

Shear displacement increment in the last step

property twist

Elastic twist angle (around normal axis) of the contact.

property twistCreep

Stored creep, substracted from total relative rotation for computation of elastic moment (auto-updated)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.ScGridCoGeom(inherits ScGeom6D ScGeom GenericSpheresContact IGeom Serializable)

Geometry of a GridConnection-Sphere contact.

property bending

Bending at contact as a vector defining axis of rotation and angle (angle=norm).

property contactPoint

some reference point for the interaction (usually in the middle). (auto-computed)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property id3

id of the first GridNode. (auto-updated)

property id4

id of the second GridNode. (auto-updated)

property id5

id of the third GridNode. (auto-updated)

incidentVel((ScGeom)arg1, (Interaction)i[, (bool)avoidGranularRatcheting=True]) Vector3 :

Return incident velocity of the interaction (see also Ig2_Sphere_Sphere_ScGeom.avoidGranularRatcheting for explanation of the ratcheting argument).

property initialOrientation1

Orientation of body 1 one at initialisation time (auto-updated)

property initialOrientation2

Orientation of body 2 one at initialisation time (auto-updated)

property isDuplicate

this flag is turned true (1) automatically if the contact is shared between two Connections. A duplicated interaction will be skipped once by the constitutive law, so that only one contact at a time is effective. If isDuplicate=2, it means one of the two duplicates has no longer geometric interaction, and should be erased by the constitutive laws.

property normal

Unit vector oriented along the interaction, from particle #1, towards particle #2. (auto-updated)

property penetrationDepth

Penetration distance of spheres (positive if overlapping)

property refR1

Reference radius of particle #1. (auto-computed)

property refR2

Reference radius of particle #2. (auto-computed)

relAngVel((ScGeom)arg1, (Interaction)i) Vector3 :

Return relative angular velocity of the interaction.

property relPos

position of the contact on the connection (0: node-, 1:node+) (auto-updated)

property shearInc

Shear displacement increment in the last step

property trueInt

Defines the body id of the GridConnection where the contact is real, when ScGridCoGeom::isDuplicate>0.

property twist

Elastic twist angle (around normal axis) of the contact.

property twistCreep

Stored creep, substracted from total relative rotation for computation of elastic moment (auto-updated)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property weight

barycentric coordinates of the projection point (auto-updated)

class yade.wrapper.TTetraGeom(inherits IGeom Serializable)

Geometry of interaction between 2 tetrahedra, including volumetric characteristics

property contactPoint

Contact point (global coords)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property equivalentCrossSection

Cross-section of the overlap (perpendicular to the axis of least inertia

property equivalentPenetrationDepth

??

property maxPenetrationDepthA

??

property maxPenetrationDepthB

??

property normal

Normal of the interaction, directed in the sense of least inertia of the overlap volume

property penetrationVolume

Volume of overlap [m³]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.TTetraSimpleGeom(inherits IGeom Serializable)

EXPERIMENTAL. Geometry of interaction between 2 tetrahedra

property contactPoint

Contact point (global coords)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property flag

TODO

property normal

Normal of the interaction TODO

property penetrationVolume

Volume of overlap [m³]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.VolumeGeom(inherits IGeom Serializable)

Geometry of the interaction between two LevelSet bodies when using volume-based interactions. Will soon become the general class for volume interaction, such that it works for polyhedra as well.

property averagePenetrationDepth

penetrationVolume / contactArea.

property contactArea

Contact area perpendicular to the normal.

property contactPoint

Contact point (global coordinates), centroid of the penetration volume.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IGeom)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property normal

Normal direction of the interaction.

property orthonormal_axis

property penetrationVolume

Volume of the overlap or penetrating region.

property shearInc

Shear displacement increment in the last step.

property twist_axis

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

IPhys

digraph IPhys {
        rankdir=RL;
        margin="0.2,0.05";
        "IPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.IPhys"];
        "WirePhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.WirePhys"];
        "WirePhys" -> "FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "MortarPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.MortarPhys"];
        "MortarPhys" -> "FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "LudingPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.LudingPhys"];
        "LudingPhys" -> "FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ViscElPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ViscElPhys"];
        "ViscElPhys" -> "FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "RotStiffFrictPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.RotStiffFrictPhys"];
        "RotStiffFrictPhys" -> "FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ViscElCapPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ViscElCapPhys"];
        "ViscElCapPhys" -> "ViscElPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "MindlinCapillaryPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.MindlinCapillaryPhys"];
        "MindlinCapillaryPhys" -> "MindlinPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "MindlinPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.MindlinPhys"];
        "MindlinPhys" -> "RotStiffFrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "NormPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.NormPhys"];
        "NormPhys" -> "IPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "MultiFrictPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.MultiFrictPhys"];
        "MultiFrictPhys" -> "IPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "FrictViscoPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FrictViscoPhys"];
        "FrictViscoPhys" -> "FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "JCFpmPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.JCFpmPhys"];
        "JCFpmPhys" -> "NormShearPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "InelastCohFrictPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.InelastCohFrictPhys"];
        "InelastCohFrictPhys" -> "RotStiffFrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CapillaryMindlinPhysDelaunay" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CapillaryMindlinPhysDelaunay"];
        "CapillaryMindlinPhysDelaunay" -> "MindlinPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CohFrictPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CohFrictPhys"];
        "CohFrictPhys" -> "RotStiffFrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "MindlinPhysCDM" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.MindlinPhysCDM"];
        "MindlinPhysCDM" -> "MindlinPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "KnKsPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.KnKsPhys"];
        "KnKsPhys" -> "FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "BubblePhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.BubblePhys"];
        "BubblePhys" -> "IPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CpmPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CpmPhys"];
        "CpmPhys" -> "NormShearPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CapillaryPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CapillaryPhys"];
        "CapillaryPhys" -> "FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PolyhedraPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PolyhedraPhys"];
        "PolyhedraPhys" -> "FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "LubricationPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.LubricationPhys"];
        "LubricationPhys" -> "ViscElPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "FrictPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FrictPhys"];
        "FrictPhys" -> "NormShearPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ViscoFrictPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ViscoFrictPhys"];
        "ViscoFrictPhys" -> "FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "KnKsPBPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.KnKsPBPhys"];
        "KnKsPBPhys" -> "FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "NormShearPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.NormShearPhys"];
        "NormShearPhys" -> "NormPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CapillaryPhysDelaunay" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CapillaryPhysDelaunay"];
        "CapillaryPhysDelaunay" -> "FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of IPhys.

class yade.wrapper.IPhys(inherits Serializable)

Physical (material) properties of interaction.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.BubblePhys(inherits IPhys Serializable)

Physics of bubble-bubble interactions, for use with BubbleMat

property Dmax

Maximum penetrationDepth of the bubbles before the force displacement curve changes to an artificial exponential curve. Setting this value will have no effect. See Law2_ScGeom_BubblePhys_Bubble::pctMaxForce for more information

static computeForce((float)arg1, (float)arg2, (float)arg3, (int)arg4, (float)arg5, (float)arg6, (float)arg7, (BubblePhys)arg8) float :

Computes the normal force acting between the two interacting bubbles using the Newton-Rhapson method

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property fN

Contact normal force

property newtonIter

Maximum number of force iterations allowed

property newtonTol

Convergence criteria for force iterations

property normalForce

Normal force

property rAvg

Average radius of the two interacting bubbles

property surfaceTension

Surface tension of the surrounding liquid

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.CapillaryMindlinPhysDelaunay(inherits MindlinPhys RotStiffFrictPhys FrictPhys NormShearPhys NormPhys IPhys Serializable)

An extended version of ̀(iPhysType), adding capillary data for CapillarityEngine.

property Delta1

Defines the surface area wetted by the meniscus on the smallest grains of radius R1 (R1<R2)

property Delta2

Defines the surface area wetted by the meniscus on the biggest grains of radius R2 (R1<R2)

property Fs

Shear force in local axes (computed incrementally)

property SInterface

Fluid-Gaz Interfacial area

property adhesionForce

Force of adhesion as predicted by DMT

property arcLength

Arc Length of the Fluid-Gaz Interface

property beta

Auxiliary parameter used in the viscous damping model of [Mueller2011]

property betan

Normal Damping Ratio. Fraction of the viscous damping coefficient (normal direction) equal to \(\frac{c_{n}}{C_{n,crit}}\).

property betas

Shear Damping Ratio. Fraction of the viscous damping coefficient (shear direction) equal to \(\frac{c_{s}}{C_{s,crit}}\).

property capillaryPressure

Value of the capillary pressure Uc defines as Ugas-Uliquid

property computeBridge

If true, capillary bridge will be computed if not it will be ignored.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property fCap

Capillary Force produces by the presence of the meniscus

property fusionNumber

Indicates the number of meniscii that overlap with this one

property initD

initial penetration distance, used for crackaperture estimate

property isAdhesive

bool to identify if the contact is adhesive, that is to say if the contact force is attractive

property isBroken

If true, capillary force is zero and liquid bridge is inactive.

property isSliding

check if the contact is sliding (useful to calculate the ratio of sliding contacts)

property kn

Normal stiffness

property kno

Constant value in the formulation of the normal stiffness

property kr

rotational stiffness [N.m/rad]

property ks

Shear stiffness

property kso

Constant value in the formulation of the tangential stiffness

property ktw

twist stiffness [N.m/rad]

property maxBendPl

Coefficient to determine the maximum plastic moment to apply at the contact

property meniscus

Presence of a meniscus if true

property momentBend

Artificial bending moment to provide rolling resistance in order to account for some degree of interlocking between particles

property momentTwist

Artificial twisting moment (no plastic condition can be applied at the moment)

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property normalViscous

Normal viscous component

property prevU

Previous local displacement; only used with Law2_L3Geom_FrictPhys_HertzMindlin.

property radius

Contact radius (only computed with Law2_ScGeom_MindlinPhys_Mindlin::calcEnergy)

property shearElastic

Total elastic shear force

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearViscous

Shear viscous component

property tangensOfFrictionAngle

tan of angle of friction

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property usElastic

Total elastic shear displacement (only elastic part)

property usTotal

Total elastic shear displacement (elastic+plastic part)

property vMeniscus

Volume of the menicus

class yade.wrapper.CapillaryPhys(inherits FrictPhys NormShearPhys NormPhys IPhys Serializable)

Physics (of interaction) for Law2_ScGeom_CapillaryPhys_Capillarity.

property Delta1

Defines the surface area wetted by the meniscus on the smallest grains of radius R1 (R1<R2)

property Delta2

Defines the surface area wetted by the meniscus on the biggest grains of radius R2 (R1<R2)

property capillaryPressure

Value of the capillary pressure Uc. Defined as Ugas-Uliquid, obtained from corresponding Law2 parameter

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property fCap

Capillary force produced by the presence of the meniscus. This is the force acting on particle #2

property fusionNumber

Indicates the number of meniscii that overlap with this one

property isBroken

Might be set to true by the user to make liquid bridge inactive (capillary force is zero)

property kn

Normal stiffness

property ks

Shear stiffness

property meniscus

True when a meniscus with a non-zero liquid volume (vMeniscus) has been computed for this interaction

property nn11

\(\iint_A n_1 n_1 \, dS = \iint_A n_2 n_2 \, dS\), \(A\) being the liquid-gas surface of the meniscus, \(\vec n\) the associated normal, and \((1,2,3)\) a local basis with \(3\) the meniscus orientation (ScGeom.normal). NB: \(A\) = 2 nn11 + nn33.

property nn33

\(\iint_A n_3 n_3 \, dS\), \(A\) being the liquid-gas surface of the meniscus, \(\vec n\) the associated normal, and \((1,2,3)\) a local basis with \(3\) the meniscus orientation (ScGeom.normal). NB: \(A\) = 2 nn11 + nn33.

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property tangensOfFrictionAngle

tan of angle of friction

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vMeniscus

Volume of the meniscus

class yade.wrapper.CapillaryPhysDelaunay(inherits FrictPhys NormShearPhys NormPhys IPhys Serializable)

An extended version of ̀FrictPhys, adding capillary data for CapillarityEngine.

property Delta1

Defines the surface area wetted by the meniscus on the smallest grains of radius R1 (R1<R2)

property Delta2

Defines the surface area wetted by the meniscus on the biggest grains of radius R2 (R1<R2)

property SInterface

Fluid-Gaz Interfacial area

property arcLength

Arc Length of the Fluid-Gaz Interface

property capillaryPressure

Value of the capillary pressure Uc defines as Ugas-Uliquid

property computeBridge

If true, capillary bridge will be computed if not it will be ignored.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property fCap

Capillary Force produces by the presence of the meniscus

property fusionNumber

Indicates the number of meniscii that overlap with this one

property isBroken

If true, capillary force is zero and liquid bridge is inactive.

property kn

Normal stiffness

property ks

Shear stiffness

property meniscus

Presence of a meniscus if true

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property tangensOfFrictionAngle

tan of angle of friction

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vMeniscus

Volume of the menicus

class yade.wrapper.CohFrictPhys(inherits RotStiffFrictPhys FrictPhys NormShearPhys NormPhys IPhys Serializable)

An interaction physics that extends RotStiffFrictPhys adding a breakable cohesive nature. Used e.g. by Law2_ScGeom6D_CohFrictPhys_CohesionMoment.

property cohesionBroken

is cohesion active? Set to false at the creation of a cohesive contact, and set to true when a fragile contact is broken

property cohesionDisablesFriction

is shear strength the sum of friction and adhesion or only adhesion?

property creep_viscosity

creep viscosity [Pa.s/m].

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property fragile

do cohesion disappear when contact strength is exceeded?

property initCohesion

Initialize the cohesive behaviour with current state as equilibrium state (same as Ip2_CohFrictMat_CohFrictMat_CohFrictPhys::setCohesionNow but acting on only one interaction)

property kn

Normal stiffness

property kr

rotational stiffness [N.m/rad]

property ks

Shear stiffness

property ktw

twist stiffness [N.m/rad]

property maxRollPl

Coefficient of rolling friction (negative means elastic).

property maxTwistPl

Coefficient of twisting friction (negative means elastic).

property momentRotationLaw

set from CohFrictMat::momentRotationLaw in order to possibly use bending/twisting moment at contacts (if true). See Law2_ScGeom6D_CohFrictPhys_CohesionMoment::always_use_moment_law for details.

property moment_bending

Bending moment

property moment_twist

Twist moment

property normalAdhesion

tensile strength

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property rollingAdhesion

maximum bending moment when normal force is null (a frictional term might be added depending on CohFrictPhys::cohesionDisablesFriction and CohFrictPhys::maxRollPl)

property shearAdhesion

cohesive part of the shear strength (a frictional term might be added depending on CohFrictPhys::cohesionDisablesFriction)

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property tangensOfFrictionAngle

tan of angle of friction

property twistingAdhesion

maximum twisting moment when normal force is null (a frictional term might be added depending on CohFrictPhys::cohesionDisablesFriction and CohFrictPhys::maxTwistPl)

property unp

plastic normal displacement, only used for tensile behaviour and if CohFrictPhys::fragile =false.

property unpMax

maximum value of plastic normal displacement (counted positively), after that the interaction breaks even if CohFrictPhys::fragile =false. A negative value (i.e. -1) means no maximum.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.CpmPhys(inherits NormShearPhys NormPhys IPhys Serializable)

Representation of a single interaction of the Cpm type: storage for relevant parameters.

Evolution of the contact is governed by Law2_ScGeom_CpmPhys_Cpm, that includes damage effects and chages of parameters inside CpmPhys. See cpm-model for details.

property E

normal modulus (stiffness / crossSection) [Pa]

property Fn

Magnitude of normal force (auto-updated)

property Fs

Magnitude of shear force (auto-updated)

property G

shear modulus [Pa]

property crossSection

equivalent cross-section associated with this contact [m²]

cummBetaCount = 0
cummBetaIter = 0
property damLaw

Law for softening part of uniaxial tension. 0 for linear, 1 for exponential (default)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property dmgOverstress

damage viscous overstress (at previous step or at current step)

property dmgRateExp

exponent in the rate-dependent damage evolution

property dmgStrain

damage strain (at previous or current step)

property dmgTau

characteristic time for damage (if non-positive, the law without rate-dependence is used)

property epsCrackOnset

strain at which the material starts to behave non-linearly

property epsFracture

strain at which the bond is fully broken [-]

property epsN

Current normal strain (auto-updated)

property epsNPl

normal plastic strain (initially zero) (auto-updated)

property epsT

Current shear strain (auto-updated)

property epsTPl

shear plastic strain (initially zero) (auto-updated)

property equivStrainShearContrib

Coefficient of shear contribution to equivalent strain

static funcG((float)kappaD, (float)epsCrackOnset, (float)epsFracture[, (bool)neverDamage=False[, (int)damLaw=1]]) float :

Damage evolution law, evaluating the \(\omega\) parameter. \(\kappa_D\) is historically maximum strain, epsCrackOnset (\(\varepsilon_0\)) = CpmPhys.epsCrackOnset, epsFracture = CpmPhys.epsFracture; if neverDamage is True, the value returned will always be 0 (no damage). TODO

static funcGInv((float)omega, (float)epsCrackOnset, (float)epsFracture[, (bool)neverDamage=False[, (int)damLaw=1]]) float :

Inversion of damage evolution law, evaluating the \(\kappa_D\) parameter. \(\omega\) is damage, for other parameters see funcG function

property isCohesive

if not cohesive, interaction is deleted when distance is greater than zero.

property isoPrestress

“prestress” of this link (used to simulate isotropic stress)

property kappaD

Up to now maximum normal strain (semi-norm), non-decreasing in time (auto-updated)

property kn

Normal stiffness

property ks

Shear stiffness

property neverDamage

the damage evolution function will always return virgin state

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property omega

Damage internal variable (auto-updated)

property plRateExp

exponent in the rate-dependent viscoplasticity

property plTau

characteristic time for viscoplasticity (if non-positive, no rate-dependence for shear)

property refLength

initial length of interaction [m]

property refPD

initial penetration depth of interaction [m] (used with ScGeom)

property relDuctility

Relative ductility of bonds in normal direction

property relResidualStrength

Relative residual strength (auto-updated)

setDamage((CpmPhys)arg1, (float)arg2) None :

TODO

setRelResidualStrength((CpmPhys)arg1, (float)arg2) None :

TODO

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property sigmaN

Current normal stress (auto-updated)

property sigmaT

Current shear stress (auto-updated)

property tanFrictionAngle

tangens of internal friction angle [-]

property undamagedCohesion

virgin material cohesion [Pa]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.FrictPhys(inherits NormShearPhys NormPhys IPhys Serializable)

The simple linear elastic-plastic interaction with friction angle, like in the traditional [CundallStrack1979]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property kn

Normal stiffness

property ks

Shear stiffness

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property tangensOfFrictionAngle

tan of angle of friction

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.FrictViscoPhys(inherits FrictPhys NormShearPhys NormPhys IPhys Serializable)

Representation of a single interaction of the FrictViscoPM type, storage for relevant parameters

property cn

Normal viscous constant defined as \(\c_{n}=c_{n,crit}\beta_n\).

property cn_crit

Normal viscous constant for ctitical damping defined as \(\c_{n}=C_{n,crit}\beta_n\).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property kn

Normal stiffness

property ks

Shear stiffness

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property normalViscous

Normal viscous component

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property tangensOfFrictionAngle

tan of angle of friction

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.InelastCohFrictPhys(inherits RotStiffFrictPhys FrictPhys NormShearPhys NormPhys IPhys Serializable)
property cohesionBroken

is cohesion active? will be set false when a fragile contact is broken

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property isBroken

true if compression plastic fracture achieved

property kDam

Damage coefficient on bending, computed from maximum bending moment reached and pure creep behaviour. Its values will vary between InelastCohFrictPhys::kr and InelastCohFrictPhys::kRCrp .

property kRCrp

Bending creep stiffness

property kRUnld

Bending plastic unload stiffness

property kTCrp

Tension/compression creep stiffness

property kTUnld

Tension/compression plastic unload stiffness

property kTwCrp

Twist creep stiffness

property kTwUnld

Twist plastic unload stiffness

property kn

Normal stiffness

property knC

compression stiffness

property knT

tension stiffness

property kr

rotational stiffness [N.m/rad]

property ks

shear stiffness

property ktw

twist stiffness [N.m/rad]

property maxBendMom

Plastic failure bending moment.

property maxContract

Plastic failure contraction (shrinkage).

property maxCrpRchdB

maximal bending moment reached on plastic deformation.

property maxCrpRchdC

maximal compression reached on plastic deformation. maxCrpRchdC[0] stores un and maxCrpRchdC[1] stores Fn.

property maxCrpRchdT

maximal extension reached on plastic deformation. maxCrpRchdT[0] stores un and maxCrpRchdT[1] stores Fn.

property maxCrpRchdTw

maximal twist reached on plastic deformation. maxCrpRchdTw[0] stores twist angle and maxCrpRchdTw[1] stores twist moment.

property maxElB

Maximum bending elastic moment.

property maxElC

Maximum compression elastic force.

property maxElT

Maximum tension elastic force.

property maxElTw

Maximum twist elastic moment.

property maxExten

Plastic failure extension (stretching).

property maxTwist

Plastic failure twist angle

property moment_bending

Bending moment

property moment_twist

Twist moment

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property onPlastB

true if plasticity achieved on bending

property onPlastC

true if plasticity achieved on compression

property onPlastT

true if plasticity achieved on traction

property onPlastTw

true if plasticity achieved on twisting

property pureCreep

Pure creep curve, used for comparison in calculation.

property shearAdhesion

Maximum elastic shear force (cohesion).

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property tangensOfFrictionAngle

tan of angle of friction

property twp

plastic twist penetration depth describing the equilibrium state.

property unp

plastic normal penetration depth describing the equilibrium state.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.JCFpmPhys(inherits NormShearPhys NormPhys IPhys Serializable)

Representation of a single interaction of the JCFpm type, storage for relevant parameters

property FnMax

positiv value computed from tensile strength (or joint variant) to define the maximum admissible normal force in traction: Fn >= -FnMax. [N]

property FsMax

computed from cohesion (or jointCohesion) to define the maximum admissible tangential force in shear, for Fn=0. [N]

property checkedForCluster

Have we checked if this int belongs in cluster?

property clusterInts

vector of pointers to the broken interactions nearby constituting a cluster

property clusteredEvent

is this interaction part of a cluster?

property computedCentroid

Flag for moment calculation

property crackJointAperture

Relative displacement between 2 spheres (in case of a crack it is equivalent of the crack aperture)

property crossSection

crossSection=pi*Rmin^2. [m2]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property dilation

defines the normal displacement in the joint after sliding treshold. [m]

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property elapsedIter

number of elapsed iterations for moment calculation

property eventBeginTime

The time at which event initiated

property eventNumber

cluster event number

property firstMomentCalc

Flag for moment calculation (auto-updated)

property initD

equilibrium distance for interacting particles. Computed as the interparticular distance at first contact detection.

property interactionsAdded

have we added the ints associated with this event?

property isBroken

flag for broken interactions

property isCohesive

If false, particles interact in a frictional way. If true, particles are bonded regarding the given cohesion and tensile strength (or their jointed variants).

property isOnJoint

defined as true when both interacting particles are on joint and are in opposite sides of the joint surface. In this case, mechanical parameters of the interaction are derived from the ‘’joint…’’ material properties of the particles. Furthermore, the normal of the interaction may be re-oriented (see Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM.smoothJoint).

property isOnSlot

defined as true when interaction is located in the perforation slot (surface).

property jointCumulativeSliding

sliding distance for particles interacting on a joint. Used, when is true, to take into account dilatancy due to shearing. [-]

property jointNormal

normal direction to the joint, deduced from e.g. .

property kineticEnergy

kinetic energy of the two spheres participating in the interaction (easiest to store this value with interaction instead of spheres since we are using this information for moment magnitude estimations and associated interaction searches)

property kn

Normal stiffness

property ks

Shear stiffness

property momentBroken

Flag for moment calculation

property momentCalculated

Flag for moment calculation to avoid repeating twice the operations (auto-updated)

property momentCentroid

centroid of the AE event (avg location of clustered breaks)

property momentEnergy

reference strain (or kinetic) energy of surrounding interactions (particles)

property momentEnergyChange

storage of the maximum strain (or kinetic) energy change for surrounding interactions (particles)

property momentMagnitude

Moment magnitude of a failed interaction

property more

specifies if the interaction is crossed by more than 3 joints. If true, interaction is deleted (temporary solution).

property nearbyFound

Count used to debug moment calc

property nearbyInts

vector of pointers to the nearby ints used for moment calc

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property originalClusterEvent

the original AE event for a cluster

property originalEvent

pointer to the original interaction of a cluster

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property strainEnergy

strain energy of interaction

property tanDilationAngle

tangent of the angle defining the dilatancy of the joint surface (auto. computed from JCFpmMat.jointDilationAngle). [-]

property tanFrictionAngle

tangent of Coulomb friction angle for this interaction (auto. computed). [-]

property temporalWindow

temporal window for the clustering algorithm

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.KnKsPBPhys(inherits FrictPhys NormShearPhys NormPhys IPhys Serializable)

EXPERIMENTAL. IPhys for PotentialBlock.

property cohesion

Cohesion (stress units)

property cohesionBroken

Whether cohesion is already broken. Considered true for particles with isBoundary=True

property contactArea

Contact area (auto-updated)

property cumulative_us

Cumulative translation

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property effective_phi

Friction angle in clay after displacement

property frictionAngle

Friction angle

property initialShearDir

Initial shear direction

property intactRock

Whether to consider cohesive force in the Mohr-Coulomb criterion, if Law2_SCG_KnKsPBPhys_KnKsPBLaw.allowBreakage=False and cohesionBroken=False

property isSliding

Check if the contact is sliding (useful to calculate the ratio of sliding contacts)

property jointLength

Approximated contact length

property jointType

jointType

property kn

Normal stiffness

property knVol

Volumetric normal stiffness = Knormal

property kn_i

initial normal stiffness, user must provide input during initialisation

property ks

Shear stiffness

property ksVol

Volumetric shear stiffness = Kshear

property ks_i

initial shear stiffness, user must provide input during initialisation

property mobilizedShear

Percentage of mobilized shear force as the ratio of the current shear force to the current frictional limit. Represents a quantified measure of the isSliding parameter

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property normalViscous

Viscous normal force

property phi_b

Basic friction angle (degrees)

property phi_r

Residual friction angle (degrees)

property prevNormal

Previous contact normal

property prevSigma

Previous normal stress

property ptOnP1

Point on particle 1

property ptOnP2

Point on particle 2

property shearDir

Shear direction

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearIncrementForCD

toSeeWhether it is necessary to update contactArea

property shearViscous

Viscous shear force (assumed zero at the moment)

property smallerID

id of particle with smaller plane

property tangensOfFrictionAngle

tan of angle of friction

property tension

Tension (stress units)

property tensionBroken

Whether tension is already broken. Considered true for particles with isBoundary=True

property u_cumulative

Cumulative translation

property u_elastic

Elastic shear displacement, not fully in use

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property useFaceProperties

Whether to get face properties from the intersecting particles

property viscousDamping

Viscous damping

property warmstart

Warmstart for SOCP, not fully in use

class yade.wrapper.KnKsPhys(inherits FrictPhys NormShearPhys NormPhys IPhys Serializable)

EXPERIMENTAL. IPhys for PotentialParticle.

property brittleLength

Shear length where strength degrades, not fully in use

property cohesion

Cohesion

property cohesionBroken

Whether cohesion is already broken. Considered true for particles with isBoundary=True

property contactArea

Contact area (auto-updated)

property cumulative_us

Cumulative shear translation (not fully in use)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property effective_phi

Friction angle in clay after displacement

property frictionAngle

Friction angle

property initialShearDir

Initial shear direction

property intactRock

Whether to consider cohesive force in the Mohr-Coulomb criterion, if allowBreakage=False and cohesionBroken=False.

property isSliding

Check if the contact is sliding (useful to calculate the ratio of sliding contacts)

property jointLength

Approximated contact length

property jointType

jointType

property kn

Normal stiffness

property knVol

Volumetric normal stiffness = Knormal

property kn_i

Currently, we assume kn_i and Knormal are adopting the same value in Ip2 initialisation

property ks

Shear stiffness

property ksVol

Volumetric shear stiffness = Kshear

property ks_i

Currently, we assume ks_i and Kshear are adopting the same value in Ip2 initialisation

property maxClosure

not fully in use, vmi

property mobilizedShear

Percentage of mobilized shear force as the ratio of the current shear force to the current frictional limit. Represents a quantified measure of the isSliding parameter

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property normalViscous

Viscous normal force

property phi_b

Basic friction angle (degrees)

property phi_r

Residual friction angle (degrees)

property prevNormal

Previous normal

property prevSigma

Previous normal stress

property ptOnP1

Point on particle 1

property ptOnP2

Point on particle 2

property shearDir

Shear direction

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearIncrementForCD

toSeeWhether it is necessary to update contactArea

property shearViscous

Viscous shear force (assumed zero at the moment)

property tangensOfFrictionAngle

tan of angle of friction

property tension

Tension

property tensionBroken

Whether tension is already broken. Considered true for particles with isBoundary=True

property u_cumulative

Cumulative translation

property u_elastic

Elastic shear displacement, not fully in use

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property useFaceProperties

Whether to get face properties from the intersecting particles

property viscousDamping

Viscous damping ratio, taken equal to Ip2_FrictMat_FrictMat_KnKsPhys.viscousDamping

property warmstart

Warmstart for SOCP, not fully in use

class yade.wrapper.LubricationPhys(inherits ViscElPhys FrictPhys NormShearPhys NormPhys IPhys Serializable)

IPhys class for Lubrication w/o FlowEngine. Used by Law2_ScGeom_ImplicitLubricationPhys.

property Fn

Linear-elastic part of the normal force of the contact

property Fv

Viscous part of the normal force of the contact

property a

Mean radius [m]

property cn

Normal viscous constant

property contact

The spheres are in contact

property cs

Shear viscous constant

property delta

\(\log(u)\) - used for scheme with \(\delta=\log(u)\) variable change

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property eps

Roughness: fraction of radius used as roughness [-]

property eta

Fluid viscosity [Pa.s]

property keps

stiffness coefficient of the asperities [N/m]. Only used with resolution method=0, with resolution>0 it is always equal to kn.

property kn

Normal stiffness

property kno

Coefficient for normal stiffness (Hertzian-like contact) [N/m^(3/2)]

property ks

Shear stiffness

property mR

Rolling resistance, see [Zhou1999536].

property mRtype

Rolling resistance type, see [Zhou1999536]. mRtype=1 - equation (3) in [Zhou1999536]; mRtype=2 - equation (4) in [Zhou1999536]

property mum

Friction coefficient [-]

property normalContactForce

Normal contact force [N]

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property normalLubricationForce

Normal lubrication force [N]

property normalPotentialForce

Normal force from potential other than contact [N]

property nun

Coefficient for normal lubrication [N.s]

property prevDotU

du/dt from previous integration - used for trapezoidal scheme (see Law2_ScGeom_ImplicitLubricationPhys::resolution for choosing resolution scheme)

property prev_un

Nondeformed distance (un) at t-dt [m]

property shearContactForce

Frictional contact force [N]

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearLubricationForce

Shear lubrication force [N]

property slip

The contact is slipping

property tangensOfFrictionAngle

tan of angle of friction

property u

Interfacial distance (u) at t-dt [m]

property ue

Surface deflection (ue) at t-dt [m]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.LudingPhys(inherits FrictPhys NormShearPhys NormPhys IPhys Serializable)

IPhys created from LudingMat, for use with Law2_ScGeom_LudingPhys_Basic.

property DeltMax

Maximum overlap between particles for a collision

property DeltMin

MinimalDelta value of delta

property DeltNull

Force free overlap, plastic contact deformation

property DeltPMax

Maximum overlap between particles for the limit case

property DeltPNull

Max force free overlap, plastic contact deformation

property DeltPrev

Previous value of delta

property G0

Viscous damping

property PhiF

Dimensionless plasticity depth

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property k1

Slope of loading plastic branch

property k2

Slope of unloading and reloading elastic branch

property kc

Slope of irreversible, tensile adhesive branch

property kn

Normal stiffness

property kp

Slope of unloading and reloading limit elastic branch

property ks

Shear stiffness

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property tangensOfFrictionAngle

tan of angle of friction

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.MindlinCapillaryPhys(inherits MindlinPhys RotStiffFrictPhys FrictPhys NormShearPhys NormPhys IPhys Serializable)

Adds capillary physics to Mindlin’s interaction physics.

property Delta1

Defines the surface area wetted by the meniscus on the smallest grains of radius R1 (R1<R2)

property Delta2

Defines the surface area wetted by the meniscus on the biggest grains of radius R2 (R1<R2)

property Fs

Shear force in local axes (computed incrementally)

property adhesionForce

Force of adhesion as predicted by DMT

property beta

Auxiliary parameter used in the viscous damping model of [Mueller2011]

property betan

Normal Damping Ratio. Fraction of the viscous damping coefficient (normal direction) equal to \(\frac{c_{n}}{C_{n,crit}}\).

property betas

Shear Damping Ratio. Fraction of the viscous damping coefficient (shear direction) equal to \(\frac{c_{s}}{C_{s,crit}}\).

property capillaryPressure

Value of the capillary pressure Uc. Defined as Ugas-Uliquid, obtained from corresponding Law2 parameter

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property fCap

Capillary Force produces by the presence of the meniscus. This is the force acting on particle #2

property fusionNumber

Indicates the number of meniscii that overlap with this one

property initD

initial penetration distance, used for crackaperture estimate

property isAdhesive

bool to identify if the contact is adhesive, that is to say if the contact force is attractive

property isBroken

Might be set to true by the user to make liquid bridge inactive (capillary force is zero)

property isSliding

check if the contact is sliding (useful to calculate the ratio of sliding contacts)

property kn

Normal stiffness

property kno

Constant value in the formulation of the normal stiffness

property kr

rotational stiffness [N.m/rad]

property ks

Shear stiffness

property kso

Constant value in the formulation of the tangential stiffness

property ktw

twist stiffness [N.m/rad]

property maxBendPl

Coefficient to determine the maximum plastic moment to apply at the contact

property meniscus

True when a meniscus with a non-zero liquid volume (vMeniscus) has been computed for this interaction

property momentBend

Artificial bending moment to provide rolling resistance in order to account for some degree of interlocking between particles

property momentTwist

Artificial twisting moment (no plastic condition can be applied at the moment)

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property normalViscous

Normal viscous component

property prevU

Previous local displacement; only used with Law2_L3Geom_FrictPhys_HertzMindlin.

property radius

Contact radius (only computed with Law2_ScGeom_MindlinPhys_Mindlin::calcEnergy)

property shearElastic

Total elastic shear force

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearViscous

Shear viscous component

property tangensOfFrictionAngle

tan of angle of friction

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property usElastic

Total elastic shear displacement (only elastic part)

property usTotal

Total elastic shear displacement (elastic+plastic part)

property vMeniscus

Volume of the meniscus

class yade.wrapper.MindlinPhys(inherits RotStiffFrictPhys FrictPhys NormShearPhys NormPhys IPhys Serializable)

Representation of an interaction of the Hertz-Mindlin type.

property Fs

Shear force in local axes (computed incrementally)

property adhesionForce

Force of adhesion as predicted by DMT

property beta

Auxiliary parameter used in the viscous damping model of [Mueller2011]

property betan

Normal Damping Ratio. Fraction of the viscous damping coefficient (normal direction) equal to \(\frac{c_{n}}{C_{n,crit}}\).

property betas

Shear Damping Ratio. Fraction of the viscous damping coefficient (shear direction) equal to \(\frac{c_{s}}{C_{s,crit}}\).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property initD

initial penetration distance, used for crackaperture estimate

property isAdhesive

bool to identify if the contact is adhesive, that is to say if the contact force is attractive

property isBroken

bool to keep a bond flagged as broken (only useful when displacement criteria is used in partial sat for cracked cell estimates)

property isSliding

check if the contact is sliding (useful to calculate the ratio of sliding contacts)

property kn

Normal stiffness

property kno

Constant value in the formulation of the normal stiffness

property kr

rotational stiffness [N.m/rad]

property ks

Shear stiffness

property kso

Constant value in the formulation of the tangential stiffness

property ktw

twist stiffness [N.m/rad]

property maxBendPl

Coefficient to determine the maximum plastic moment to apply at the contact

property momentBend

Artificial bending moment to provide rolling resistance in order to account for some degree of interlocking between particles

property momentTwist

Artificial twisting moment (no plastic condition can be applied at the moment)

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property normalViscous

Normal viscous component

property prevU

Previous local displacement; only used with Law2_L3Geom_FrictPhys_HertzMindlin.

property radius

Contact radius (only computed with Law2_ScGeom_MindlinPhys_Mindlin::calcEnergy)

property shearElastic

Total elastic shear force

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearViscous

Shear viscous component

property tangensOfFrictionAngle

tan of angle of friction

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property usElastic

Total elastic shear displacement (only elastic part)

property usTotal

Total elastic shear displacement (elastic+plastic part)

class yade.wrapper.MindlinPhysCDM(inherits MindlinPhys RotStiffFrictPhys FrictPhys NormShearPhys NormPhys IPhys Serializable)

Representation of an interaction of an extended Hertz-Mindlin type. Normal direction: parameters for Conical Damage Model (Harkness et al. 2016, Suhr & Six 2017). Tangential direction: parameters for stress dependent interparticle friction coefficient (Suhr & Six 2016). Both models can be switched on/off separately, see FrictMatCDM.

property E

[Pa] equiv. Young’s modulus

property Fs

Shear force in local axes (computed incrementally)

property G

[Pa] equiv. shear modulus

property R

[m] contact radius in conical damage model

property adhesionForce

Force of adhesion as predicted by DMT

property alphaFac

factor considering angle of conical asperities

property beta

Auxiliary parameter used in the viscous damping model of [Mueller2011]

property betan

Normal Damping Ratio. Fraction of the viscous damping coefficient (normal direction) equal to \(\frac{c_{n}}{C_{n,crit}}\).

property betas

Shear Damping Ratio. Fraction of the viscous damping coefficient (shear direction) equal to \(\frac{c_{s}}{C_{s,crit}}\).

property c1

[-] parameter of pressure dependent friction model c1

property c2

[-] parameter of pressure dependent friction model c2

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property initD

initial penetration distance, used for crackaperture estimate

property isAdhesive

bool to identify if the contact is adhesive, that is to say if the contact force is attractive

property isBroken

bool to keep a bond flagged as broken (only useful when displacement criteria is used in partial sat for cracked cell estimates)

property isSliding

check if the contact is sliding (useful to calculate the ratio of sliding contacts)

property isYielding

bool: is contact currently yielding?

property kn

Normal stiffness

property kno

Constant value in the formulation of the normal stiffness

property kr

rotational stiffness [N.m/rad]

property ks

Shear stiffness

property kso

Constant value in the formulation of the tangential stiffness

property ktw

twist stiffness [N.m/rad]

property maxBendPl

Coefficient to determine the maximum plastic moment to apply at the contact

property momentBend

Artificial bending moment to provide rolling resistance in order to account for some degree of interlocking between particles

property momentTwist

Artificial twisting moment (no plastic condition can be applied at the moment)

property mu0

[-] parameter of pressure dependent friction model mu0

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property normalViscous

Normal viscous component

property prevU

Previous local displacement; only used with Law2_L3Geom_FrictPhys_HertzMindlin.

property radius

Contact radius (only computed with Law2_ScGeom_MindlinPhys_Mindlin::calcEnergy)

property shearElastic

Total elastic shear force

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearViscous

Shear viscous component

property sigmaMax

[Pa] max compressive strength of material

property tangensOfFrictionAngle

tan of angle of friction

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property usElastic

Total elastic shear displacement (only elastic part)

property usTotal

Total elastic shear displacement (elastic+plastic part)

class yade.wrapper.MortarPhys(inherits FrictPhys NormShearPhys NormPhys IPhys Serializable)

IPhys class containing parameters of MortarMat. Used by Law2_ScGeom_MortarPhys_Lourenco.

property cohesion

cohesion [Pa]

property compressiveStrength

compressiveStrength [Pa]

property crossSection

Crosssection of interaction

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property ellAspect

aspect ratio of elliptical ‘cap’. Value >1 means the ellipse is longer along normal stress axis.

failureCondition((MortarPhys)arg1, (float)arg2, (float)arg3) bool :

Failure condition from normal stress and norm of shear stress (false=elastic, true=damaged)

property kn

Normal stiffness

property ks

Shear stiffness

property neverDamage

If true, interactions remain elastic regardless stresses

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property sigmaN

Current normal stress (auto-updated)

property sigmaT

Current shear stress (auto-updated)

property tangensOfFrictionAngle

tan of angle of friction

property tensileStrength

tensileStrength [Pa]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.MultiFrictPhys(inherits IPhys Serializable)

A set of FrictPhys for describing the physical part of an interaction with multiple frictional contact points between two LevelSet bodies, as a set of FrictPhys items in contacts. To combine with MultiScGeom and associated classes.

property contacts

The actual list of FrictPhys items corresponding to the different contact points.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property frictAngle

Mother value of atan(FrictPhys.tangensOfFrictionAngle) in radians that will apply to each contact point.

property kn

Mother value of FrictPhys.kn that will apply to each contact point.

property ks

Mother value of FrictPhys.ks that will apply to each contact point.

property nodesIds

The physics counterpart of MultiScGeom.nodesIds (both should be equal by design).

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.NormPhys(inherits IPhys Serializable)

Abstract class for interactions that have normal stiffness.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property kn

Normal stiffness

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.NormShearPhys(inherits NormPhys IPhys Serializable)

Abstract class for interactions that have shear stiffnesses, in addition to normal stiffness. This class is used in the PFC3d-style stiffness timestepper.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property kn

Normal stiffness

property ks

Shear stiffness

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.PolyhedraPhys(inherits FrictPhys NormShearPhys NormPhys IPhys Serializable)

Simple elastic material with friction for volumetric constitutive laws

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property kn

Normal stiffness

property ks

Shear stiffness

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property tangensOfFrictionAngle

tan of angle of friction

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.RotStiffFrictPhys(inherits FrictPhys NormShearPhys NormPhys IPhys Serializable)

Version of FrictPhys with a rotational stiffness

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property kn

Normal stiffness

property kr

rotational stiffness [N.m/rad]

property ks

Shear stiffness

property ktw

twist stiffness [N.m/rad]

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property tangensOfFrictionAngle

tan of angle of friction

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.ViscElCapPhys(inherits ViscElPhys FrictPhys NormShearPhys NormPhys IPhys Serializable)

IPhys created from ViscElCapMat, for use with Law2_ScGeom_ViscElCapPhys_Basic.

property Capillar

True, if capillar forces need to be added.

property CapillarType

Different types of capillar interaction: Willett_numeric, Willett_analytic, Weigert, Rabinovich, Lambert, Soulie

property Fn

Linear-elastic part of the normal force of the contact

property Fv

Viscous part of the normal force of the contact

property Vb

Liquid bridge volume [m^3]

property cn

Normal viscous constant

property cs

Shear viscous constant

property dcap

Damping coefficient for the capillary phase [-]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property gamma

Surface tension [N/m]

property kn

Normal stiffness

property ks

Shear stiffness

property liqBridgeActive

Whether liquid bridge is active at the moment

property liqBridgeCreated

Whether liquid bridge was created, only after a normal contact of spheres

property mR

Rolling resistance, see [Zhou1999536].

property mRtype

Rolling resistance type, see [Zhou1999536]. mRtype=1 - equation (3) in [Zhou1999536]; mRtype=2 - equation (4) in [Zhou1999536]

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property sCrit

Critical bridge length [m]

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property tangensOfFrictionAngle

tan of angle of friction

property theta

Contact angle [rad]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.ViscElPhys(inherits FrictPhys NormShearPhys NormPhys IPhys Serializable)

IPhys created from ViscElMat, for use with Law2_ScGeom_ViscElPhys_Basic.

property Fn

Linear-elastic part of the normal force of the contact

property Fv

Viscous part of the normal force of the contact

property cn

Normal viscous constant

property cs

Shear viscous constant

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property kn

Normal stiffness

property ks

Shear stiffness

property mR

Rolling resistance, see [Zhou1999536].

property mRtype

Rolling resistance type, see [Zhou1999536]. mRtype=1 - equation (3) in [Zhou1999536]; mRtype=2 - equation (4) in [Zhou1999536]

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property tangensOfFrictionAngle

tan of angle of friction

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.ViscoFrictPhys(inherits FrictPhys NormShearPhys NormPhys IPhys Serializable)

Temporary version of FrictPhys for compatibility reasons

property creepedShear

Creeped force (parallel)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property kn

Normal stiffness

property ks

Shear stiffness

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property tangensOfFrictionAngle

tan of angle of friction

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.WirePhys(inherits FrictPhys NormShearPhys NormPhys IPhys Serializable)

Representation of a single interaction of the WirePM type, storage for relevant parameters

property dL

Additional wire length for considering the distortion for WireMat type=2 (see [Thoeni2013]).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispHierarchy((IPhys)arg1[, (bool)names=True]) list :

Return list of dispatch classes (from down upwards), starting with the class instance itself, top-level indexable at last. If names is true (default), return class names rather than numerical indices.

property dispIndex

Return class index of this instance.

property displForceValues

Defines the values for force-displacement curve.

property initD

Equilibrium distance for particles. Computed as the initial inter-particular distance when particle are linked.

property isDoubleTwist

If true the properties of the interaction will be defined as a double-twisted wire.

property isLinked

If true particles are linked and will interact. Interactions are linked automatically by the definition of the corresponding interaction radius. The value is false if the wire breaks (no more interaction).

property isShifted

If true WireMat type=2 and the force-displacement curve will be shifted.

property kn

Normal stiffness

property ks

Shear stiffness

property limitFactor

This value indicates on how far from failing the wire is, e.g. actual normal displacement divided by admissible normal displacement.

property normalForce

Normal force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property plastD

Plastic part of the inter-particular distance of the previous step.

Note

Only elastic displacements are reversible (the elastic stiffness is used for unloading) and compressive forces are inadmissible. The compressive stiffness is assumed to be equal to zero.

property shearForce

Shear force after previous step (in global coordinates), as sustained by particle #2 (from particle #1).

property stiffnessValues

Defines the values for the various stiffnesses (the elastic stiffness is stored as kn).

property tangensOfFrictionAngle

tan of angle of friction

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

Global engines

GlobalEngine

digraph GlobalEngine {
        rankdir=RL;
        margin="0.2,0.05";
        "GlobalEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GlobalEngine"];
        "CohesiveFrictionalContactLaw" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CohesiveFrictionalContactLaw"];
        "CohesiveFrictionalContactLaw" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "RungeKuttaCashKarp54Integrator" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.RungeKuttaCashKarp54Integrator"];
        "RungeKuttaCashKarp54Integrator" -> "Integrator" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ElasticContactLaw" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ElasticContactLaw"];
        "ElasticContactLaw" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "FacetTopologyAnalyzer" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FacetTopologyAnalyzer"];
        "FacetTopologyAnalyzer" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "TetraVolumetricLaw" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TetraVolumetricLaw"];
        "TetraVolumetricLaw" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "SpheresFactory" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.SpheresFactory"];
        "SpheresFactory" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CircularFactory" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CircularFactory"];
        "CircularFactory" -> "SpheresFactory" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "FieldApplier" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#inheritancegraphfieldapplier"];
        "FieldApplier" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "InteractionLoop" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.InteractionLoop"];
        "InteractionLoop" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "TesselationWrapper" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TesselationWrapper"];
        "TesselationWrapper" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "NewtonIntegrator" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.NewtonIntegrator"];
        "NewtonIntegrator" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ForceResetter" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ForceResetter"];
        "ForceResetter" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CapillarityEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CapillarityEngine"];
        "CapillarityEngine" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "FoamCoupling" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FoamCoupling"];
        "FoamCoupling" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "TimeStepper" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TimeStepper"];
        "TimeStepper" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "BoundaryController" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#inheritancegraphboundarycontroller"];
        "BoundaryController" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Collider" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#inheritancegraphcollider"];
        "Collider" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "HydrodynamicsLawLBM" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.HydrodynamicsLawLBM"];
        "HydrodynamicsLawLBM" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "GlobalStiffnessTimeStepper" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GlobalStiffnessTimeStepper"];
        "GlobalStiffnessTimeStepper" -> "TimeStepper" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Integrator" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Integrator"];
        "Integrator" -> "TimeStepper" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "MicroMacroAnalyser" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.MicroMacroAnalyser"];
        "MicroMacroAnalyser" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "FEInternalForceEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FEInternalForceEngine"];
        "FEInternalForceEngine" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_CapillaryPhys_Capillarity" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_CapillaryPhys_Capillarity"];
        "Law2_ScGeom_CapillaryPhys_Capillarity" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PeriodicEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#inheritancegraphperiodicengine"];
        "PeriodicEngine" -> "GlobalEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "BoxFactory" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.BoxFactory"];
        "BoxFactory" -> "SpheresFactory" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of GlobalEngine, gray dashed classes are discussed in their own sections: FieldApplier, BoundaryController, Collider, PeriodicEngine.

class yade.wrapper.GlobalEngine(inherits Engine Serializable)

Engine that will generally affect the whole simulation (contrary to PartialEngine).

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.BoxFactory(inherits SpheresFactory GlobalEngine Engine Serializable)

Box geometry of the SpheresFactory region, given by extents and center

property PSDcalculateMass

PSD-Input is in mass (true), otherwise the number of particles will be considered.

property PSDcum

PSD-dispersion, cumulative procent meanings [-]

property PSDsizes

PSD-dispersion, sizes of cells, Diameter [m]

property blockedDOFs

Blocked degress of freedom

property center

Center of the region

property color

Use the color for newly created particles, if specified

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property exactDiam

If true, the particles only with the defined in PSDsizes diameters will be created. Otherwise the diameter will be randomly chosen in the range [PSDsizes[i-1]:PSDsizes[i]], in this case the length of PSDsizes should be more on 1, than the length of PSDcum.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property extents

Extents of the region

property goalMass

Total mass that should be attained at the end of the current step. (auto-updated)

property ids

ids of created bodies

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

groupMask to apply for newly created spheres

property massFlowRate

Mass flow rate [kg/s]

property materialId

Shared material id to use for newly created spheres (can be negative to count from the end)

property maxAttempt

Maximum number of attempts to position a new sphere randomly.

property maxMass

Maximal mass at which to stop generating new particles regardless of massFlowRate. if maxMass=-1 - this parameter is ignored.

property maxParticles

The number of particles at which to stop generating new ones regardless of massFlowRate. if maxParticles=-1 - this parameter is ignored .

property normal

Orientation of the region’s geometry, direction of particle’s velocites if normalVel is not set.

property normalVel

Direction of particle’s velocites.

property numParticles

Cummulative number of particles produces so far (auto-updated)

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property rMax

Maximum radius of generated spheres (uniform distribution)

property rMin

Minimum radius of generated spheres (uniform distribution)

property silent

If true no complain about excessing maxAttempt but disable the factory (by set massFlowRate=0).

property stopIfFailed

If true, the SpheresFactory stops (sets massFlowRate=0), when maximal number of attempts to insert particle exceed.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property totalMass

Mass of spheres that was produced so far. (auto-updated)

property totalVolume

Volume of spheres that was produced so far. (auto-updated)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vAngle

Maximum angle by which the initial sphere velocity deviates from the normal.

property vMax

Maximum velocity norm of generated spheres (uniform distribution)

property vMin

Minimum velocity norm of generated spheres (uniform distribution)

class yade.wrapper.CapillarityEngine(inherits GlobalEngine Engine Serializable)

This engine loops over interactions with physics CapillaryPhysDelaunay and it assign pendular bridges to them. It is a reimplementation of [Scholtes2009b], adding the option of imposing the bridge volume (instead of only capillary pressure) and enabling using unstructured input data by triangulation. This reimplementation also provides more geometrical quantities in order to define interfacial energy terms, it was used specifically in [Chalak2017].

If :yref:`CapillarityEngine.imposePressure`==True, a uniform capillary pressure is assigned to all bridges, the liquid volume of each bridge is a result and it will change if the distance between the spheres changes. If :yref:`CapillarityEngine.imposePressure`==False, then the volume of each bridge remains constant during motion, and capillary pressure is updated, instead.

For references, see [Scholtes2009b] and a couple papers by the same authors; [Scholtes2009d] (in french) is the most detailed.

The engine needs an input data file available in yade-data package.

In order to allow capillary forces between distant spheres, it is necessary to enlarge the bounding boxes using Bo1_Sphere_Aabb::aabbEnlargeFactor and make the Ig2 define define distant interactions via:yref:interactionDetectionFactor<Ig2_Sphere_Sphere_ScGeom::interactionDetectionFactor>. It is also necessary to disable interactions removal by the constitutive law (Law2). The only combinations of laws supported are currently capillary law + Law2_ScGeom_FrictPhys_CundallStrack and capillary law + Law2_ScGeom_MindlinPhys_Mindlin (and the other variants of Hertz-Mindlin).

See triaxCapillarityDelaunay.py for an example script.

property binaryFusion

If true, capillary forces are set to zero as soon as, at least, 1 overlap (menisci fusion) is detected

property capillaryPressure

Value of the capillary pressure Uc defines as Uc=Ugas-Uliquid

property createDistantMeniscii

Generate meniscii between distant spheres? Else only maintain the existing one. For modeling a wetting path this flag should always be false. For a drying path it should be true for one step (initialization) then false, as in the logic of [Scholtes2009c]. The engine turns it off automatically after one execution.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property disp

Dispersion from the mean Value of the roughness

property epsilonMean

Mean Value of the roughness

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property fusionDetection

If true potential menisci overlaps are checked

property hertzInitialized

FIXME: replace by class index

property hertzOn

(auto-updated) true if hertz model is used

property imposePressure

If True, suction is imposed and is constant if not Volume is imposed-Undrained test

property initialized

property inputFilename

the file with meniscus solutions, used for interpolation.

intEnergy((CapillarityEngine)arg1) float :

define the energy of interfaces in unsaturated pendular state

property interactionDetectionFactor

defines critical distance for deleting interactions. Must be consistent with the Ig2 value.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property liquidTension

Value of the superficial water tension in N/m

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

solveStandalone((CapillarityEngine)arg1, (float)R1, (float)R2, (float)pressure, (float)gap[, (CapillaryPhysDelaunay)bridge=None]) CapillaryPhysDelaunay :

Returns a CapillaryPhysDelaunay object representing a single bridge independently of the scene, using radii R1 and R2, capillary pressure, and gap between two spheres. The returned value contains internals of the interpolation process, it can be passed as an optional argument (‘bridge’). If the resolution is repeated multiple times, re-using cached data will increase performance if the geometrical parameters are changing by small increments

swInterface((CapillarityEngine)arg1) float :

define the amount of solid-wetting interfaces in unsaturated pendular state

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property totalVolumeConstant

in undrained test there are 2 options, If True, the total volume of water is imposed,if false the volume of each meniscus is kept constant: in this case capillary pressure can be imposed for initial distribution of meniscus or it is the total volume that can be imposed initially

property totalVolumeofWater

Value of imposed water volume

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

waterVolume((CapillarityEngine)arg1) float :

return the total value of water in the sample

wnInterface((CapillarityEngine)arg1) float :

define the amount of wetting-non-wetiing interfaces in unsaturated pendular state

class yade.wrapper.CircularFactory(inherits SpheresFactory GlobalEngine Engine Serializable)

Circular geometry of the SpheresFactory region. It can be disk (given by radius and center), or cylinder (given by radius, length and center).

property PSDcalculateMass

PSD-Input is in mass (true), otherwise the number of particles will be considered.

property PSDcum

PSD-dispersion, cumulative procent meanings [-]

property PSDsizes

PSD-dispersion, sizes of cells, Diameter [m]

property blockedDOFs

Blocked degress of freedom

property center

Center of the region

property color

Use the color for newly created particles, if specified

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property exactDiam

If true, the particles only with the defined in PSDsizes diameters will be created. Otherwise the diameter will be randomly chosen in the range [PSDsizes[i-1]:PSDsizes[i]], in this case the length of PSDsizes should be more on 1, than the length of PSDcum.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property goalMass

Total mass that should be attained at the end of the current step. (auto-updated)

property ids

ids of created bodies

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property length

Length of the cylindrical region (0 by default)

property mask

groupMask to apply for newly created spheres

property massFlowRate

Mass flow rate [kg/s]

property materialId

Shared material id to use for newly created spheres (can be negative to count from the end)

property maxAttempt

Maximum number of attempts to position a new sphere randomly.

property maxMass

Maximal mass at which to stop generating new particles regardless of massFlowRate. if maxMass=-1 - this parameter is ignored.

property maxParticles

The number of particles at which to stop generating new ones regardless of massFlowRate. if maxParticles=-1 - this parameter is ignored .

property normal

Orientation of the region’s geometry, direction of particle’s velocites if normalVel is not set.

property normalVel

Direction of particle’s velocites.

property numParticles

Cummulative number of particles produces so far (auto-updated)

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property rMax

Maximum radius of generated spheres (uniform distribution)

property rMin

Minimum radius of generated spheres (uniform distribution)

property radius

Radius of the region

property silent

If true no complain about excessing maxAttempt but disable the factory (by set massFlowRate=0).

property stopIfFailed

If true, the SpheresFactory stops (sets massFlowRate=0), when maximal number of attempts to insert particle exceed.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property totalMass

Mass of spheres that was produced so far. (auto-updated)

property totalVolume

Volume of spheres that was produced so far. (auto-updated)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vAngle

Maximum angle by which the initial sphere velocity deviates from the normal.

property vMax

Maximum velocity norm of generated spheres (uniform distribution)

property vMin

Minimum velocity norm of generated spheres (uniform distribution)

class yade.wrapper.CohesiveFrictionalContactLaw(inherits GlobalEngine Engine Serializable)

[DEPRECATED] Loop over interactions applying Law2_ScGeom6D_CohFrictPhys_CohesionMoment on all interactions.

Note

Use InteractionLoop and Law2_ScGeom6D_CohFrictPhys_CohesionMoment instead of this class for performance reasons.

property always_use_moment_law

If false, compute moments only for cohesive contacts, broken contacts will have only normal and shear forces. If true, compute bending/twisting moments at all contacts and use the frictional coefficients CohFrictMat::etaRoll and CohFrictMat::etaTwist to define the strength of the broken contacts.

property creep_viscosity

creep viscosity [Pa.s/m]. probably should be moved to Ip2_CohFrictMat_CohFrictMat_CohFrictPhys…

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property shear_creep

activate creep on the shear force, using CohesiveFrictionalContactLaw::creep_viscosity.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property twist_creep

activate creep on the twisting moment, using CohesiveFrictionalContactLaw::creep_viscosity.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.ElasticContactLaw(inherits GlobalEngine Engine Serializable)

[DEPRECATED] Loop over interactions applying Law2_ScGeom_FrictPhys_CundallStrack on all interactions.

Note

Use InteractionLoop and Law2_ScGeom_FrictPhys_CundallStrack instead of this class for performance reasons.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.FEInternalForceEngine(inherits GlobalEngine Engine Serializable)

Unified dispatcher for handling Finite Element internal force loop at every step, for parallel performance reasons.

Special constructor

Constructs from 3 lists of Ig2, Ip2, Law functors respectively; they will be passed to interal dispatchers, which you might retrieve.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property internalforcedispatcher

InternalForceDispatcher object that is used for dispatching of element types.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.FacetTopologyAnalyzer(inherits GlobalEngine Engine Serializable)

Initializer for filling adjacency geometry data for facets.

Common vertices and common edges are identified and mutual angle between facet faces is written to Facet instances. If facets don’t move with respect to each other, this must be done only at the beginng.

property commonEdgesFound

how many common edges were identified during last run. (auto-updated)

property commonVerticesFound

how many common vertices were identified during last run. (auto-updated)

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property projectionAxis

Axis along which to do the initial vertex sort

property relTolerance

maximum distance of ‘identical’ vertices, relative to minimum facet size

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.FoamCoupling(inherits GlobalEngine Engine Serializable)
An engine for coupling Yade with the finite volume fluid solver OpenFOAM in parallel.

Requirements : Yade compiled with MPI libs, OpenFOAM-6 (openfoam is not required for compilation).Yade is executed under MPI environment with OpenFOAM simultaneously, and using MPI communication routines data is exchanged between the solvers.

  1. Yade broadcasts the particle data -> position, velocity, ang-velocity, radius to all the foam processes as in castParticle

  1. In each foam process, particle is searched.Yade keeps a vector(cpp) of the rank of the openfoam process containing that particular particle (FoamCoupling::procList), using updateProcList

3. In simple lagrangian point force coupling Yade recieves the particle hydrodynamic force and torque from the openfoam process, the sender is identified from the vector FoamCoupling::procList. In the case of Gaussian interpolation, contribution from every process is summed using function sumHydroForce . 4. The interval (substepping) is set automatically (FoamCoupling::dataExchangeInterval) based on dtfoam/dtYade, calculated in function exchangeDeltaT

property comm

Communicator to be used for MPI (converts mpi4py comm <-> c++ comm)

property couplingModeParallel

set true if Yade-MPI is being used.

property dataExchangeInterval

Number of iterations/substepping : for stability and to be in sync with fluid solver calculated in exchangeDeltaT

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

eraseId((FoamCoupling)arg1, (int)idToErase) None :

remove a body from hydrodynamic force coupling

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property fluidDensity

fluidDensity

property fluidDomains

list of fluid domain bounding fictitious fluid bodies that has the fluid mesh bounds

property foamDeltaT

timestep in openfoam solver from exchangeDeltaT

getFluidDomainBbox((FoamCoupling)arg1) None :

get the fluid domain bounding boxes, called once during simulation initialization.

getIdList((FoamCoupling)arg1) object :

get the ids of bodies in coupling

getNumBodies((FoamCoupling)arg1) int :

get the number of bodies in the coupling

getRank((FoamCoupling)arg1) None :

Initiallize MPI communicator for coupling. Should be called at the beginning of the script. :yref: initMPI <FoamCoupling::initMPI> Initializes the MPI environment.

insertBodyId((FoamCoupling)arg1, (int)newId) None :

insert a new body id for hydrodynamic force coupling

property isGaussianInterp

switch for Gaussian interpolation of field varibles in openfoam. Uses sumHydroForce to obtain hydrodynamic force

killMPI((FoamCoupling)arg1) None :

Destroy MPI, to be called at the end of the simulation, from killMPI

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property numParticles

number of particles in coupling.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property particleDensity

particle Density

setIdList((FoamCoupling)arg1, (object)bodyIdlist) None :

list of body ids in hydroForce coupling. (links to :yref: FoamCoupling::bodyList vector, used to build particle data FoamCoupling::particleData. FoamCoupling::particleData contains the particle pos, vel, angvel, radius and this is sent to foam. )

setNumParticles((FoamCoupling)arg1, (int)numparticles) None :

number of particles in coupling

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.ForceResetter(inherits GlobalEngine Engine Serializable)

Reset all forces stored in Scene::forces (O.forces in python). Typically, this is the first engine to be run at every step. In addition, reset those energies that should be reset, if energy tracing is enabled.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GlobalStiffnessTimeStepper(inherits TimeStepper GlobalEngine Engine Serializable)

An engine assigning the time-step as a fraction of the minimum eigen-period in the problem. The derivation is detailed in the chapter on DEM formulation. The viscEl option enables to evaluate the timestep in a similar way for the visco-elastic contact law Law2_ScGeom_ViscElPhys_Basic, more detail in GlobalStiffnessTimestepper::viscEl.

property active

is the engine active?

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property defaultDt

used as the initial value of the timestep (especially useful in the first steps when no contact exist). If negative, it will be defined by utils.PWaveTimeStep * GlobalStiffnessTimeStepper::timestepSafetyCoefficient

property densityScaling

(auto-updated) don’t modify this value if you don’t plan to modify the scaling factor manually for some bodies. In most cases, it is enough to set NewtonIntegrator::densityScaling and let this one be adjusted automatically.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property maxDt

if positive, used as max value of the timestep whatever the computed value

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property parallelMode

if parallelMode, dt is set to min of all subdomain dt.

property previousDt

last computed dt (auto-updated)

property targetDt

if NewtonIntegrator::densityScaling is active, this value will be used as the simulation timestep and the scaling will use this value of dt as the target value. The value of targetDt is arbitrary and should have no effect in the result in general. However if some bodies have imposed velocities, for instance, they will move more or less per each step depending on this value.

property timeStepUpdateInterval

dt update interval

property timestepSafetyCoefficient

safety factor between the minimum eigen-period and the final assigned dt (less than 1)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property viscEl

To use with ViscElPhys. if True, evaluate separetly the minimum eigen-period in the problem considering only the elastic contribution on one hand (spring only), and only the viscous contribution on the other hand (dashpot only). Take then the minimum of the two and use the safety coefficient GlobalStiffnessTimestepper::timestepSafetyCoefficient to take into account the possible coupling between the two contribution.

class yade.wrapper.HydrodynamicsLawLBM(inherits GlobalEngine Engine Serializable)

Engine to simulate fluid flow (with the lattice Boltzmann method) with a coupling with the discrete element method. If you use this Engine, please cite and refer to F. Lominé et al. International Journal For Numerical and Analytical Method in Geomechanics, 2012, doi: 10.1002/nag.1109

property ConvergenceThreshold

property CstBodyForce

A constant body force (=that does not vary in time or space, otherwise the implementation introduces errors)

property DemIterLbmIterRatio

Ratio between DEM and LBM iterations for subcycling

property EndTime

the time to stop the simulation

property EngineIsActivated

To activate (or not) the engine

property IterMax

This variable can be used to do several LBM iterations during one DEM iteration.

property IterPrint

Print info on screen every IterPrint iterations

property IterSave

Data are saved every IterSave LBM iteration (or see TimeSave)

property IterSubCyclingStart

Iteration number when the subcycling process starts

property LBMSavedData

a list of data that will be saved. Can use velocity,velXY,forces,rho,bodies,nodeBD,newNode,observedptc,observednode,contacts,spheres,bz2

property Nu

Fluid kinematic viscosity

property Nx

The number of grid division in x direction

property ObservedNode

The identifier of the node that will be observed (-1 means none)

property ObservedPtc

The identifier of the particle that will be observed (-1 means the first one)

property RadFactor

The radius of DEM particules seen by the LBM is the real radius of particules*RadFactor

property Rho

Fluid density

property SaveGridRatio

Grid data are saved every SaveGridRatio * IterSave LBM iteration (with SaveMode=1)

property SaveMode

Save Mode (1-> default, 2-> in time (not yet implemented)

property TimeSave

Data are saved at constant time interval (or see IterSave)

property VbCutOff

the minimum boundary velocity that is taken into account

property VelocityThreshold

Velocity threshold when removingCriterion=2

property WallXm_id

Identifier of the X- wall

property WallXp_id

Identifier of the X+ wall

property WallYm_id

Identifier of the Y- wall

property WallYp_id

Identifier of the Y+ wall

property WallZm_id

Identifier of the Z- wall

property WallZp_id

Identifier of the Z+ wall

property XmBCType

Boundary condition for the wall in Xm (-1: unused, 1: pressure condition, 2: velocity condition).

property XmBcRho

(!!! not fully implemented !!) The density imposed at the boundary

property XmBcVel

(!!! not fully implemented !!) The velocity imposed at the boundary

property XmYmZmBCType

Boundary condition for the corner node XmYmZm (not used with d2q9, -1: unused, 1: pressure condition, 2: velocity condition).

property XmYmZpBCType

Boundary condition for the corner node XmYmZp (-1: unused, 1: pressure condition, 2: velocity condition).

property XmYpZmBCType

Boundary condition for the corner node XmYpZm (not used with d2q9, -1: unused, 1: pressure condition, 2: velocity condition).

property XmYpZpBCType

Boundary condition for the corner node XmYpZp (-1: unused, 1: pressure condition, 2: velocity condition).

property XpBCType

Boundary condition for the wall in Xp (-1: unused, 1: pressure condition, 2: velocity condition).

property XpBcRho

(!!! not fully implemented !!) The density imposed at the boundary

property XpBcVel

(!!! not fully implemented !!) The velocity imposed at the boundary

property XpYmZmBCType

Boundary condition for the corner node XpYmZm (not used with d2q9, -1: unused, 1: pressure condition, 2: velocity condition).

property XpYmZpBCType

Boundary condition for the corner node XpYmZp (-1: unused, 1: pressure condition, 2: velocity condition).

property XpYpZmBCType

Boundary condition for the corner node XpYpZm (not used with d2q9, -1: unused, 1: pressure condition, 2: velocity condition).

property XpYpZpBCType

Boundary condition for the corner node XpYpZp (-1: unused, 1: pressure condition, 2: velocity condition).

property YmBCType

Boundary condition for the wall in Ym (-1: unused, 1: pressure condition, 2: velocity condition).

property YmBcRho

(!!! not fully implemented !!) The density imposed at the boundary

property YmBcVel

(!!! not fully implemented !!) The velocity imposed at the boundary

property YpBCType

Boundary condition for the wall in Yp (-1: unused, 1: pressure condition, 2: velocity condition).

property YpBcRho

(!!! not fully implemented !!) The density imposed at the boundary

property YpBcVel

(!!! not fully implemented !!) The velocity imposed at the boundary

property ZmBCType

Boundary condition for the wall in Zm (-1: unused, 1: pressure condition, 2: velocity condition).

property ZmBcRho

(!!! not fully implemented !!) The density imposed at the boundary

property ZmBcVel

(!!! not fully implemented !!) The velocity imposed at the boundary

property ZpBCType

Boundary condition for the wall in Zp (-1: unused, 1: pressure condition, 2: velocity condition).

property ZpBcVel

(!!! not fully implemented !!) The velocity imposed at the boundary

property applyForcesAndTorques

Switch to apply forces and torques

property bc

Boundary condition

property dP

Pressure difference between input and output

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property defaultLbmInitMode

Switch between the two initialisation methods

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property model

The LB model. Until now only d2q9 is implemented

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property periodicity

periodicity

property removingCriterion

Criterion to remove a sphere (1->based on particle position, 2->based on particle velocity

property tau

Relaxation time

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property useWallXm

Set true if you want that the LBM see the wall in Xm

property useWallXp

Set true if you want that the LBM see the wall in Xp

property useWallYm

Set true if you want that the LBM see the wall in Ym

property useWallYp

Set true if you want that the LBM see the wall in Yp

property useWallZm

Set true if you want that the LBM see the wall in Zm

property useWallZp

Set true if you want that the LBM see the wall in Zp

property zpBcRho

(!!! not fully implemented !!) The density imposed at the boundary

class yade.wrapper.Integrator(inherits TimeStepper GlobalEngine Engine Serializable)

Integration Engine Interface.

property active

is the engine active?

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property integrationsteps

all integrationsteps count as all succesfull substeps

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property maxVelocitySq

store square of max. velocity, for informative purposes; computed again at every step. (auto-updated)

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property slaves

List of lists of Engines to calculate the force acting on the particles; to obtain the derivatives of the states, engines inside will be run sequentially.

property timeStepUpdateInterval

dt update interval

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.InteractionLoop(inherits GlobalEngine Engine Serializable)

Unified dispatcher for handling interaction loop at every step, for parallel performance reasons.

Special constructor

Constructs from 3 lists of Ig2, Ip2, Law2 functors respectively; they will be passed to internal dispatchers, which you might retrieve as geomDispatcher, physDispatcher, lawDispatcher respectively.

property callbacks

Callbacks which will be called for every Interaction, if activated.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property geomDispatcher

IGeomDispatcher object that is used for dispatch.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property lawDispatcher

LawDispatcher object used for dispatch.

property loopOnSortedInteractions

If true, the main interaction loop will occur on a sorted list of interactions. This is SLOW but useful to workaround floating point force addition non reproducibility when debugging parallel implementations of yade.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property physDispatcher

IPhysDispatcher object used for dispatch.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_CapillaryPhys_Capillarity(inherits GlobalEngine Engine Serializable)

This engine allows one to take into account capillary forces/effects between spheres coming from the presence of distinct interparticular liquid bridges (menisci) at existing interactions (between particle pairs, in the so-called pendular regime). In order to allow capillary forces between distant spheres, it is necessary to enlarge the bounding boxes using Bo1_Sphere_Aabb::aabbEnlargeFactor and make the Ig2 define define distant interactions via interactionDetectionFactor. See also createDistantMeniscii. It is also necessary to disable interactions removal by the constitutive law (Law2). The only combinations of laws supported are currently capillary law + Law2_ScGeom_FrictPhys_CundallStrack and capillary law + Law2_ScGeom_MindlinPhys_Mindlin (and the other variants of Hertz-Mindlin)

The control parameter for simulating liquid bridges is the capillary pressure (or suction) Uc = Ugas - Uliquid. Liquid bridges properties (volume V, extent over interacting grains delta1 and delta2) are computed as a result of the defined capillary pressure and of the interacting geometry (spheres radii and interparticular distance). For this purpose, ascii files M(r=i) with i=R1/R2 (and a possible suffix) are required, containing a set of results from the resolution of the Laplace-Young equation for different configurations of the interacting geometry, and can be downloaded from yade-data/capillaryFiles (direct download here) for the case of a null wetting angle. They could also be regenerated, possibly for other conditions, by any user as per point II. in examples/capillaryLaplaceYoung/README.md.

See examples/capillaryLaplaceYoung/ folder for example scripts.

References: in english [Scholtes2009b] [Duriez2017b]; more detailed, but in french [Scholtes2009d].

property binaryFusion

If true, capillary forces are set to zero as soon as, at least, 1 overlap (menisci fusion) is detected. Otherwise fCap = fCap / (fusionNumber + 1 ) (experimental)

property capillaryPressure

Value of the capillary pressure Uc defined as Uc=Ugas-Uliquid

property createDistantMeniscii

Generate meniscii between distant spheres ? Else only maintain the existing ones. For modeling a wetting path this flag should always be false. For a drying path it should be true for one step (initialization) then false, as in the logic of [Scholtes2009c]. The engine turns it off automatically after one execution.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property fusionDetection

If true potential menisci overlaps are checked, computing fusionNumber for each capillary interaction, and reducing fCap according to binaryFusion

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property suffCapFiles

Capillary files suffix: M(r=X)suffCapFiles

property surfaceTension

Value of considered surface tension

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.MicroMacroAnalyser(inherits GlobalEngine Engine Serializable)

compute fabric tensor, local porosity, local deformation, and other micromechanicaly defined quantities based on triangulation/tesselation of the packing.

property compDeformation

Is the engine just saving states or also computing and outputing deformations for each increment?

property compIncrt

Should increments of force and displacements be defined on [n,n+1]? If not, states will be saved with only positions and forces (no displacements).

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property incrtNumber

property interval

Number of timesteps between analyzed states.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nonSphereAsFictious

bodies that are not spheres will be used to defines bounds (else just skipped).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property outputFile

Base name for increment analysis output file.

property stateFileName

Base name of state files.

property stateNumber

A number incremented and appended at the end of output files to reflect increment number.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.NewtonIntegrator(inherits GlobalEngine Engine Serializable)

Engine integrating newtonian motion equations, see Motion integration for some theoretical background.

property dampGravity

By default, numerical damping applies to ALL forces, even gravity. If this option is set to false, then the gravity forces calculated based on NewtonIntegrator.gravity are excluded from the damping calculation. This option has no effect on gravity forces added by GravityEngine.

property damping

damping coefficient for Cundall’s non viscous damping (see Numerical damping and [Chareyre2005])

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property densityScaling

if True, then density scaling [Pfc3dManual30] will be applied in order to have a critical timestep equal to GlobalStiffnessTimeStepper::targetDt for all bodies. This option makes the simulation unrealistic from a dynamic point of view, but may speedup quasistatic simulations. In rare situations, it could be useful to not set the scalling factor automatically for each body (which the time-stepper does). In such case revert GlobalStiffnessTimeStepper.densityScaling to False.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property exactAsphericalRot

Enable more exact body rotation integrator for aspherical bodies only, using formulations from [delValle2023], [Omelyan1998], or [Fincham1992] depending on rotAlgorithm

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property gravity

Gravitational acceleration (effectively replaces GravityEngine).

property kinSplit

Whether to separately track translational and rotational kinetic energy.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

If mask defined and the bitwise AND between mask and body`s groupMask gives 0, the body will not move/rotate. Velocities and accelerations will be calculated not paying attention to this parameter.

property maxVelocitySq

stores max. displacement, based on which we trigger collision detection. (auto-updated)

property niterOmelyan1998

The number of iterations used to solve the nonlinear system of [Omelyan1998] formulation. Provided a small enough timestep, three iterations are enough to make the system converge.

property normalizeEvery

Normalize the quaternion every normalizeEvery step. Only used in the aspherical formulations from [delValle2023], [Omelyan1998].

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property prevVelGrad

Store previous velocity gradient (Cell::velGrad) to track average acceleration in periodic simulations. (auto-updated)

property rotAlgorithm

Which rotation algorithm to use. Options are: delValle2023, Omelyan1998, Fincham1992.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property warnNoForceReset

Warn when forces were not resetted in this step by ForceResetter; this mostly points to ForceResetter being forgotten incidentally and should be disabled only with a good reason.

class yade.wrapper.RungeKuttaCashKarp54Integrator(inherits Integrator TimeStepper GlobalEngine Engine Serializable)

RungeKuttaCashKarp54Integrator engine.

__init__((object)arg1) None

object __init__(tuple args, dict kwds)

__init__( (object)arg1, (list)arg2) -> object :

Construct from (possibly nested) list of slaves.

property a_dxdt

property a_x

property abs_err

Relative integration tolerance

property active

is the engine active?

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property integrationsteps

all integrationsteps count as all succesfull substeps

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property maxVelocitySq

store square of max. velocity, for informative purposes; computed again at every step. (auto-updated)

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property rel_err

Absolute integration tolerance

property slaves

List of lists of Engines to calculate the force acting on the particles; to obtain the derivatives of the states, engines inside will be run sequentially.

property stepsize

It is not important for an adaptive integration but important for the observer for setting the found states after integration

property timeStepUpdateInterval

dt update interval

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.SpheresFactory(inherits GlobalEngine Engine Serializable)

Engine for spitting spheres based on mass flow rate, particle size distribution etc. Initial velocity of particles is given by vMin, vMax, the massFlowRate determines how many particles to generate at each step. When goalMass is attained or positive maxParticles is reached, the engine does not produce particles anymore. Geometry of the region should be defined in a derived engine by overridden SpheresFactory::pickRandomPosition().

A sample script for this engine is in scripts/spheresFactory.py.

property PSDcalculateMass

PSD-Input is in mass (true), otherwise the number of particles will be considered.

property PSDcum

PSD-dispersion, cumulative procent meanings [-]

property PSDsizes

PSD-dispersion, sizes of cells, Diameter [m]

property blockedDOFs

Blocked degress of freedom

property color

Use the color for newly created particles, if specified

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property exactDiam

If true, the particles only with the defined in PSDsizes diameters will be created. Otherwise the diameter will be randomly chosen in the range [PSDsizes[i-1]:PSDsizes[i]], in this case the length of PSDsizes should be more on 1, than the length of PSDcum.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property goalMass

Total mass that should be attained at the end of the current step. (auto-updated)

property ids

ids of created bodies

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

groupMask to apply for newly created spheres

property massFlowRate

Mass flow rate [kg/s]

property materialId

Shared material id to use for newly created spheres (can be negative to count from the end)

property maxAttempt

Maximum number of attempts to position a new sphere randomly.

property maxMass

Maximal mass at which to stop generating new particles regardless of massFlowRate. if maxMass=-1 - this parameter is ignored.

property maxParticles

The number of particles at which to stop generating new ones regardless of massFlowRate. if maxParticles=-1 - this parameter is ignored .

property normal

Orientation of the region’s geometry, direction of particle’s velocites if normalVel is not set.

property normalVel

Direction of particle’s velocites.

property numParticles

Cummulative number of particles produces so far (auto-updated)

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property rMax

Maximum radius of generated spheres (uniform distribution)

property rMin

Minimum radius of generated spheres (uniform distribution)

property silent

If true no complain about excessing maxAttempt but disable the factory (by set massFlowRate=0).

property stopIfFailed

If true, the SpheresFactory stops (sets massFlowRate=0), when maximal number of attempts to insert particle exceed.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property totalMass

Mass of spheres that was produced so far. (auto-updated)

property totalVolume

Volume of spheres that was produced so far. (auto-updated)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vAngle

Maximum angle by which the initial sphere velocity deviates from the normal.

property vMax

Maximum velocity norm of generated spheres (uniform distribution)

property vMin

Minimum velocity norm of generated spheres (uniform distribution)

class yade.wrapper.TesselationWrapper(inherits GlobalEngine Engine Serializable)

Handle the triangulation of spheres in a scene, build tesselation on request, and give access to computed quantities (see also the dedicated section in user manual). The calculation of microstrain is explained in [Catalano2014a]

See example usage in script example/tesselationWrapper/tesselationWrapper.py.

Below is an output of the defToVtk function visualized with paraview (in this case Yade’s TesselationWrapper was used to process experimental data obtained on sand by Edward Ando at Grenoble University, 3SR lab.)

_images/localstrain.png

The definition of outer contours of arbitrary shapes and the application of stress on them, based on CGAL’s ‘alpha shapes’ is also possible. See scripts/examples/alphaShapes/GlDrawAlpha.py (giving the figure below) and other examples therein. Read more in [Pekmezi2020] and further papers by the same authors.

_images/alphaShape.png
addBoundingPlane((TesselationWrapper)arg1, (int)axis, (bool)positive) int :

add a bounding plane (in fact a sphere with very large radius) bounding the spheres along the direction ‘axis’ (0,1,2), on the ‘positive’ or negative side.

property alphaCapsVol

The volume of the packing as defined by the boundary alpha cap polygons

applyAlphaForces((TesselationWrapper)arg1, (Matrix3)stress[, (float)alpha=0[, (float)shrinkedAlpha=0[, (bool)fixedAlpha=False[, (bool)reset=True]]]]) None :

set permanent forces based on stress using an alpha shape

applyAlphaVel((TesselationWrapper)arg1, (Matrix3)velGrad[, (float)alpha=0[, (float)shrinkedAlpha=0[, (bool)fixedAlpha=False]]]) None :

set velocities based on a velocity gradient tensor using an alpha shape

calcAlphaStress((TesselationWrapper)arg1[, (float)alpha=0[, (float)shrinkedAlpha=0[, (bool)fixedAlpha=False]]]) Matrix3 :

get the Love-Weber average of the Cauchy stress on the polyhedral caps associated to boundary particles

calcVolPoroDef((TesselationWrapper)arg1[, (bool)deformation=False]) dict :

Return a table with per-sphere computed quantities. Include deformations on the increment defined by states 0 and 1 if deformation=True (make sure to define states 0 and 1 consistently).

computeDeformations((TesselationWrapper)arg1) None :

compute per-particle deformation. Get it with TesselationWrapper::deformation (id,i,j).

computeVolumes((TesselationWrapper)arg1) None :

compute volumes of all Voronoi’s cells.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

defToVtk((TesselationWrapper)arg1[, (str)outputFile='def.vtk']) None :

Write local deformations in vtk format from states 0 and 1.

defToVtkFromPositions((TesselationWrapper)arg1[, (str)input1='pos1'[, (str)input2='pos2'[, (str)outputFile='def.vtk'[, (bool)bz2=False]]]]) None :

Write local deformations in vtk format from positions files (one sphere per line, with x,y,z,rad separated by spaces).

defToVtkFromStates((TesselationWrapper)arg1[, (str)input1='state1'[, (str)input2='state2'[, (str)outputFile='def.vtk'[, (bool)bz2=True]]]]) None :

Write local deformations in vtk format from state files (since the file format is very special, consider using defToVtkFromPositions if the input files were not generated by TesselationWrapper).

deformation((TesselationWrapper)arg1, (int)id, (int)i, (int)j) float :

Get individual components of the particle deformation tensors

deformationTensor((TesselationWrapper)arg1, (int)id) Matrix3 :

Get particle deformation (tensor)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property far

Defines the radius of the large virtual spheres used to define nearly flat boundaries around the assembly. The radius will be the (scene’s) bounding box size multiplied by ‘far’. Higher values will minimize the error theoretically (since the infinite sphere really defines a plane), but it may increase numerical errors at some point. The default should give a resonable compromize.

getAlphaCaps((TesselationWrapper)arg1[, (float)alpha=0[, (float)shrinkedAlpha=0[, (bool)fixedAlpha=False]]]) list :

Get the list of area vectors for the polyhedral caps associated to boundary particles (‘extended’ alpha-contour). If alpha is not specified or null the minimum alpha resulting in a unique connected domain is used. Taking a smaller ‘shrinked’ alpha for placing the virtual spheres moves the enveloppe outside the packing, It should be ~(alpha-refRad) typically.

getAlphaFaces((TesselationWrapper)arg1[, (float)alpha=0]) list :

Get the list of alpha faces for a given alpha. If alpha is not specified or null the minimum alpha resulting in a unique connected domain is used

getAlphaGraph((TesselationWrapper)arg1[, (float)alpha=0[, (float)shrinkedAlpha=0[, (bool)fixedAlpha=False]]]) list :

Get the list of area vectors for the polyhedral caps associated to boundary particles (‘extended’ alpha-contour). If alpha is not specified or null the minimum alpha resulting in a unique connected domain is used

getAlphaVertices((TesselationWrapper)arg1[, (float)alpha=0]) list :

Get the list of ‘alpha’ bounding spheres for a given alpha. If alpha is not specified or null the minimum alpha resulting in a unique connected domain is used. This function is generating a new alpha shape for each call, not to be used intensively.

property grad_u

The Displacement Gradient Tensor

property groupMask

Bitmask for filtering spheres, ignored if 0.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

loadState((TesselationWrapper)arg1[, (str)inputFile='state'[, (bool)state=0[, (bool)bz2=True]]]) None :

Load a file with positions to define state 0 or 1.

property mma

underlying object processing the data - see specific settings in MicroMacroAnalyser class documentation

property n_spheres

(auto-computed)

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

saveState((TesselationWrapper)arg1[, (str)outputFile='state'[, (bool)state=0[, (bool)bz2=True]]]) None :

Save a file with positions, can be later reloaded in order to define state 0 or 1.

setState((TesselationWrapper)arg1[, (bool)state=0]) None :

Make the current state of the simulation the initial (0) or final (1) configuration for the definition of displacement increments, use only state=0 if you just want to get volmumes and porosity. Exclude bodies using the bitmask TesselationWrapper::groupMask.

testAlphaShape((TesselationWrapper)arg1[, (float)alpha=0]) None :

transitory function, testing AlphaShape feature

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

triangulate((TesselationWrapper)arg1[, (bool)reset=True]) None :

triangulate spheres of the packing

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

volume((TesselationWrapper)arg1[, (int)id=0]) float :

Returns the volume of Voronoi’s cell of a sphere.

class yade.wrapper.TetraVolumetricLaw(inherits GlobalEngine Engine Serializable)

Calculate physical response of 2 tetrahedra in interaction, based on penetration configuration given by TTetraGeom.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.TimeStepper(inherits GlobalEngine Engine Serializable)

Engine defining time-step (fundamental class)

property active

is the engine active?

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timeStepUpdateInterval

dt update interval

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

PeriodicEngine

digraph PeriodicEngine {
        rankdir=RL;
        margin="0.2,0.05";
        "PeriodicEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PeriodicEngine"];
        "PotentialBlockVTKRecorder" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PotentialBlockVTKRecorder"];
        "PotentialBlockVTKRecorder" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "VTKRecorder" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.VTKRecorder"];
        "VTKRecorder" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PolyhedraSplitter" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PolyhedraSplitter"];
        "PolyhedraSplitter" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "RockLiningGlobal" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.RockLiningGlobal"];
        "RockLiningGlobal" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "MeasureCapStress" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.MeasureCapStress"];
        "MeasureCapStress" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ForceRecorder" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ForceRecorder"];
        "ForceRecorder" -> "Recorder" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ResetRandomPosition" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ResetRandomPosition"];
        "ResetRandomPosition" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PotentialParticleVTKRecorder" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PotentialParticleVTKRecorder"];
        "PotentialParticleVTKRecorder" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "TorqueRecorder" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TorqueRecorder"];
        "TorqueRecorder" -> "Recorder" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CapillaryStressRecorder" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CapillaryStressRecorder"];
        "CapillaryStressRecorder" -> "Recorder" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PDFEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PDFEngine"];
        "PDFEngine" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PyRunner" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PyRunner"];
        "PyRunner" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "DomainLimiter" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.DomainLimiter"];
        "DomainLimiter" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "TriaxialStateRecorder" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TriaxialStateRecorder"];
        "TriaxialStateRecorder" -> "Recorder" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "SplitPolyMohrCoulomb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.SplitPolyMohrCoulomb"];
        "SplitPolyMohrCoulomb" -> "PolyhedraSplitter" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "RockBolt" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.RockBolt"];
        "RockBolt" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CpmStateUpdater" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CpmStateUpdater"];
        "CpmStateUpdater" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "LubricationPDFEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.LubricationPDFEngine"];
        "LubricationPDFEngine" -> "PDFEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Recorder" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Recorder"];
        "Recorder" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "SnapshotEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.SnapshotEngine"];
        "SnapshotEngine" -> "PeriodicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "SplitPolyTauMax" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.SplitPolyTauMax"];
        "SplitPolyTauMax" -> "PolyhedraSplitter" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of PeriodicEngine.

class yade.wrapper.PeriodicEngine(inherits GlobalEngine Engine Serializable)

Run Engine::action with given fixed periodicity real time (=wall clock time, computation time), virtual time (simulation time), iteration number), by setting any of those criteria (virtPeriod, realPeriod, iterPeriod) to a positive value. They are all negative (inactive) by default.

The number of times this engine is activated can be limited by setting nDo>0. If the number of activations will have been already reached, no action will be called even if an active period has elapsed.

If initRun is set (false by default), the engine will run when called for the first time; otherwise it will only start counting period (realLast, etc, interval variables) from that point, but without actually running, and will run only once a period has elapsed since the initial run.

This class should not be used directly; rather, derive your own engine which you want to be run periodically.

Derived engines should override Engine::action(), which will be called periodically. If the derived Engine overrides also Engine::isActivated, it should also take in account return value from PeriodicEngine::isActivated, since otherwise the periodicity will not be functional.

Example with PyRunner, which derives from PeriodicEngine; likely to be encountered in python scripts:

PyRunner(realPeriod=5,iterPeriod=10000,command='print O.iter')  

will print iteration number every 10000 iterations or every 5 seconds of wall clock time, whichever comes first since it was last run.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

class yade.wrapper.CapillaryStressRecorder(inherits Recorder PeriodicEngine GlobalEngine Engine Serializable)

Records information from capillary meniscii on samples submitted to triaxial compressions. Classical sign convention (tension positiv) is used for capillary stresses. -> New formalism needs to be tested!!!

property addIterNum

Adds an iteration number to the file name, when the file was created. Useful for creating new files at each call (false by default)

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property file

Name of file to save to; must not be empty.

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property truncate

Whether to delete current file contents, if any, when opening (false by default)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

class yade.wrapper.CpmStateUpdater(inherits PeriodicEngine GlobalEngine Engine Serializable)

Update CpmState of bodies based on state variables in CpmPhys of interactions with this bod. In particular, bodies’ colors and CpmState::normDmg depending on average damage of their interactions and number of interactions that were already fully broken and have disappeared is updated. This engine contains its own loop (2 loops, more precisely) over all bodies and should be run periodically to update colors during the simulation, if desired.

property avgRelResidual

Average residual strength at last run.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property maxOmega

Globally maximum damage parameter at last run.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

class yade.wrapper.DomainLimiter(inherits PeriodicEngine GlobalEngine Engine Serializable)

Delete particles that are out of axis-aligned box given by lo and hi.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property hi

Upper corner of the domain.

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property lo

Lower corner of the domain.

property mDeleted

Mass of deleted particles.

property mask

If mask is defined, only particles with corresponding groupMask will be deleted.

property nDeleted

Cummulative number of particles deleted.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vDeleted

Volume of deleted spheres (clumps not counted, in that case check mDeleted)

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

class yade.wrapper.ForceRecorder(inherits Recorder PeriodicEngine GlobalEngine Engine Serializable)

Engine saves the resultant force affecting to bodies, listed in ids. For instance, can be useful for defining the forces, which affects to _buldozer_ during its work.

property addIterNum

Adds an iteration number to the file name, when the file was created. Useful for creating new files at each call (false by default)

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property file

Name of file to save to; must not be empty.

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property ids

List of bodies whose state will be measured

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property totalForce

Resultant force, returning by the function.

property truncate

Whether to delete current file contents, if any, when opening (false by default)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

class yade.wrapper.LubricationPDFEngine(inherits PDFEngine PeriodicEngine GlobalEngine Engine Serializable)

Implementation of PDFEngine for Lubrication law

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property filename

Filename

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property numDiscretizeAnglePhi

Number of sector for phi-angle

property numDiscretizeAngleTheta

Number of sector for theta-angle

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

property warnedOnce

For one-time warning. May trigger usefull warnings

class yade.wrapper.MeasureCapStress(inherits PeriodicEngine GlobalEngine Engine Serializable)

Post-processing engine giving the capillary stress tensor (the fluids mixture contribution to the total stress in unsaturated, i.e. triphasic, conditions) according to the \(\mu\)UNSAT expression detailled in [Duriez2017c]. Although this expression differs in nature from the one of utils.getCapillaryStress (consideration of distributed integrals herein, vs resultant capillary force therein), both are equivalent [Duriez2016b], [Duriez2017], [Duriez2017c]. The REV volume \(V\) entering the expression is automatically measured, from the Cell for periodic conditions, or from utils.aabbExtrema function otherwise.

property capillaryPressure

Capillary pressure \(u_c\), to be defined equal to Law2_ScGeom_CapillaryPhys_Capillarity.capillaryPressure.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property debug

To output some debugging messages.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property muGamma

Tensorial contribution to sigmaCap from the contact lines \(\Gamma\): \(\boldsymbol{\mu_{\Gamma}} = \int_{\Gamma} \vec \nu_{nw} \otimes \vec x \, dl\) with \(\vec \nu_{nw}\) the fluid-fluid interface conormal [Duriez2017c], and \(\vec x\) the position. (auto-updated)

property muSnw

Tensorial contribution to sigmaCap from the wetting/non-wetting (e.g. liquid/gas) interface \(S{nw}\): \(\boldsymbol{\mu_{Snw}} = \int_{Snw} (\boldsymbol \delta - \vec n \otimes \vec n) dS\) with \(\vec n\) the outward normal and \(\boldsymbol{\delta}\) the identity tensor. (auto-updated)

property muSsw

Tensorial contribution to sigmaCap from the wetted solid surfaces \(Ssw\): \(\boldsymbol{\mu_{Ssw}} = \int_{Ssw} \vec n \otimes \vec x dS\) with \(\vec n\) the outward normal and \(\vec x\) the position. (auto-updated)

property muVw

Tensorial contribution (spherical i.e. isotropic) to sigmaCap from the wetting fluid volume: \(\boldsymbol{\mu_{Vw}} = V_w \, \boldsymbol{\delta}\) with \(V_w =\) vW and \(\boldsymbol{\delta}\) the identity tensor. (auto-updated)

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property sigmaCap

The capillary stress tensor \(\boldsymbol{\sigma^{cap}}\) itself, expressed as \(\boldsymbol{\sigma^{cap}} = 1/V \, [ u_c (\boldsymbol{\mu_{Vw}} + \boldsymbol{\mu_{Ssw}}) + \gamma_{nw} (\boldsymbol{\mu_{Snw}} + \boldsymbol{\mu_{\Gamma}}) ]\) where the four microstructure tensors \(\boldsymbol{\mu_{Vw}}, \boldsymbol{\mu_{Ssw}}, \boldsymbol{\mu_{Snw}}, \boldsymbol{\mu_{\Gamma}}\) correspond to muVw, muSsw, muSnw and muGamma attributes. (auto-updated)

property surfaceTension

Fluid-fluid surface tension \(\gamma_{nw}\), to be defined equal to Law2_ScGeom_CapillaryPhys_Capillarity.surfaceTension.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vW

Wetting fluid volume, summing menisci volumes (faster here than through python loops). (auto-updated)

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

property wettAngle

Wetting, i.e. contact, angle value (radians). To be defined consistently with the value upon which the capillary files (used by Law2_ScGeom_CapillaryPhys_Capillarity) rely.

class yade.wrapper.PDFEngine(inherits PeriodicEngine GlobalEngine Engine Serializable)

Base class for spectrums calculations. Compute Probability Density Functions of normalStress, shearStress, distance, velocity and interactions in spherical coordinates and write result to a file. Column name format is: Data(theta, phi). Convention used: x: phi = 0, y: theta = 0, z: phi = pi/2

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property filename

Filename

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property numDiscretizeAnglePhi

Number of sector for phi-angle

property numDiscretizeAngleTheta

Number of sector for theta-angle

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

property warnedOnce

For one-time warning. May trigger usefull warnings

class yade.wrapper.PolyhedraSplitter(inherits PeriodicEngine GlobalEngine Engine Serializable)

Engine that splits polyhedras.

Warning

PolyhedraSplitter returns different results depending on CGAL version! For details see https://gitlab.com/yade-dev/trunk/issues/45

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

class yade.wrapper.PotentialBlockVTKRecorder(inherits PeriodicEngine GlobalEngine Engine Serializable)

Engine recording potential blocks as surfaces into files with given periodicity.

property REC_COLORS

Whether to record colors

property REC_ID

Whether to record id

property REC_INTERACTION

Whether to record contact point and forces

property REC_VELOCITY

Whether to record velocity

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property fileName

File prefix to save to

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property maxDimension

Maximum allowed distance between consecutive grid lines

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property sampleX

Number of divisions in the X direction for triangulation

property sampleY

Number of divisions in the Y direction for triangulation

property sampleZ

Number of divisions in the Z direction for triangulation

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property twoDimension

Whether to render the particles as 2-D

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

class yade.wrapper.PotentialParticleVTKRecorder(inherits PeriodicEngine GlobalEngine Engine Serializable)

Engine recording potential blocks as surfaces into files with given periodicity.

property REC_COLORS

Whether to record colors

property REC_ID

Whether to record id

property REC_INTERACTION

Whether to record contact point and forces

property REC_VELOCITY

Whether to record velocity

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property fileName

File prefix to save to

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property maxDimension

Maximum allowed distance between consecutive grid lines

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property sampleX

Number of divisions in the X direction for triangulation

property sampleY

Number of divisions in the Y direction for triangulation

property sampleZ

Number of divisions in the Z direction for triangulation

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property twoDimension

Whether to render the particles as 2-D

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

class yade.wrapper.PyRunner(inherits PeriodicEngine GlobalEngine Engine Serializable)

Execute a python command periodically, with defined (and adjustable) periodicity. See PeriodicEngine documentation for details.

property command

Command to be run by python interpreter. Not run if empty.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property ignoreErrors

Debug only: set this value to true to tell PyRunner to ignore any errors encountered during command execution.

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property updateGlobals

Whether to workaround ipython not recognizing local variables by calling globals().update(locals()). If true then PyRunner is able to call functions declared later locally in a running live yade session. The PyRunner call is a bit slower because it updates globals() with recently declared python functions.

Warning

When updateGlobals==False and a function was declared inside a live yade session (ipython) then an error NameError: name 'command' is not defined will occur unless python globals() are updated with command

globals().update(locals())

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

class yade.wrapper.Recorder(inherits PeriodicEngine GlobalEngine Engine Serializable)

Engine periodically storing some data to (one) external file. In addition PeriodicEngine, it handles opening the file as needed. See PeriodicEngine for controlling periodicity.

property addIterNum

Adds an iteration number to the file name, when the file was created. Useful for creating new files at each call (false by default)

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property file

Name of file to save to; must not be empty.

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property truncate

Whether to delete current file contents, if any, when opening (false by default)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

class yade.wrapper.ResetRandomPosition(inherits PeriodicEngine GlobalEngine Engine Serializable)

Creates spheres during simulation, placing them at random positions. Every time called, one new sphere will be created and inserted in the simulation.

property angularVelocity

Mean angularVelocity of spheres.

property angularVelocityRange

Half size of a angularVelocity distribution interval. New sphere will have random angularVelocity within the range angularVelocity±angularVelocityRange.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property factoryFacets

The geometry of the section where spheres will be placed; they will be placed on facets or in volume between them depending on volumeSection flag.

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property maxAttempts

Max attempts to place sphere. If placing the sphere in certain random position would cause an overlap with any other physical body in the model, SpheresFactory will try to find another position.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property normal

??

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property point

??

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property subscribedBodies

Affected bodies.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property velocity

Mean velocity of spheres.

property velocityRange

Half size of a velocities distribution interval. New sphere will have random velocity within the range velocity±velocityRange.

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

property volumeSection

Create new spheres inside factory volume rather than on its surface.

class yade.wrapper.RockBolt(inherits PeriodicEngine GlobalEngine Engine Serializable)

Engine recording potential blocks as surfaces into files with given periodicity.

property averageForce

averageForce

property axialForces

force

property axialMax

maximum axial force

property axialStiffness

EA

property blockIDs

ids

property boltDirection

direction

property boltLength

startingPt

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property displacements

ids

property distanceFrCentre

nodePosition

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property fileName

File prefix to save to

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property forces

force

property halfActiveLength

stiffness

property initRun

Run the first time we are called as well.

property initialDirection

initial length

property initialLength

initial length

property installed

installed?

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property localCoordinates

local coordinates of intersection

property maxForce

maxForce

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property name

File prefix to save to

property nodeDistanceVec

nodeDistance

property nodePosition

nodePosition

property normalStiffness

EA/L

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property openingCreated

opening created?

property openingRad

estimated opening radius

property preTension

prestressed tension

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property resetLengthInit

reset length for pretension

property ruptured

ruptured

property shearForces

force

property shearMax

maximum shear force

property shearStiffness

stiffness

property startingPoint

startingPt

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property useMidPoint

large length

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

property vtkIteratorInterval

how often to print vtk

property vtkRefTimeStep

first timestep to print vtk

class yade.wrapper.RockLiningGlobal(inherits PeriodicEngine GlobalEngine Engine Serializable)

Engine recording potential blocks as surfaces into files with given periodicity.

property Area

A

property EA

EA

property EI

EI

property ElasticModulus

E

property Inertia

I

property assembledKglobal

global stiffness matrix

property axialForces

force

property axialMax

maximum axial force

property blockIDs

ids

property contactLength

contactLength

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property density

density

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property displacement

force

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property expansionFactor

alpha deltaT

property fileName

File prefix to save to

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initOverlap

initialOverlap

property initRun

Run the first time we are called as well.

property installed

installed?

property interfaceCohesion

L

property interfaceFriction

L

property interfaceStiffness

L

property interfaceTension

L

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property lengthNode

L

property liningThickness

liningThickness

property localCoordinates

local coordinates of intersection

property lumpedMass

lumpedMass

property moment

moment

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property name

File prefix to save to

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property openingCreated

opening created?

property openingRad

estimated opening radius

property radialDisplacement

force

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property refAngle

initial theta

property refDir

initial v

property refOri

initial theta

property refPos

initial u

property ruptured

ruptured

property shearForces

force

property shearMax

maximum shear force

property sigmaMax

sigma max

property sigmaMin

sigma min

property startingPoint

startingPt

property stickIDs

L

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property totalNodes

L

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

property vtkIteratorInterval

how often to print vtk

property vtkRefTimeStep

first timestep to print vtk

class yade.wrapper.SnapshotEngine(inherits PeriodicEngine GlobalEngine Engine Serializable)

Periodically save snapshots of GLView(s) as .png files. Files are named fileBase + counter + ‘.png’ (counter is left-padded by 0s, i.e. snap00004.png).

property counter

Number that will be appended to fileBase when the next snapshot is saved (incremented at every save). (auto-updated)

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property deadTimeout

Timeout for 3d operations (opening new view, saving snapshot); after timing out, throw exception (or only report error if ignoreErrors) and make myself dead. [s]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property fileBase

Basename for snapshots

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property format

Format of snapshots (one of JPEG, PNG, EPS, PS, PPM, BMP) QGLViewer documentation. File extension will be lowercased format. Validity of format is not checked.

property ignoreErrors

Only report errors instead of throwing exceptions, in case of timeouts.

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property msecSleep

number of msec to sleep after snapshot (to prevent 3d hw problems) [ms]

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property plot

Name of field in plot.imgData to which taken snapshots will be appended automatically.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property snapshots

Files that have been created so far

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

class yade.wrapper.SplitPolyMohrCoulomb(inherits PolyhedraSplitter PeriodicEngine GlobalEngine Engine Serializable)

Split polyhedra according to Mohr-Coulomb criterion.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property fileName

Base.

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

class yade.wrapper.SplitPolyTauMax(inherits PolyhedraSplitter PeriodicEngine GlobalEngine Engine Serializable)

Split polyhedra along TauMax.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

class yade.wrapper.TorqueRecorder(inherits Recorder PeriodicEngine GlobalEngine Engine Serializable)

Engine saves the total torque according to the given axis and ZeroPoint, the force is taken from bodies, listed in ids For instance, can be useful for defining the torque, which affects on ball mill during its work.

property addIterNum

Adds an iteration number to the file name, when the file was created. Useful for creating new files at each call (false by default)

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property file

Name of file to save to; must not be empty.

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property ids

List of bodies whose state will be measured

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property rotationAxis

Rotation axis

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property totalTorque

Resultant torque, returning by the function.

property truncate

Whether to delete current file contents, if any, when opening (false by default)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

property zeroPoint

Point of rotation center

class yade.wrapper.TriaxialStateRecorder(inherits Recorder PeriodicEngine GlobalEngine Engine Serializable)

Engine recording triaxial variables (see the variables list in the first line of the output file). This recorder needs TriaxialCompressionEngine or ThreeDTriaxialEngine present in the simulation).

property addIterNum

Adds an iteration number to the file name, when the file was created. Useful for creating new files at each call (false by default)

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property file

Name of file to save to; must not be empty.

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property porosity

porosity of the packing [-]

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property truncate

Whether to delete current file contents, if any, when opening (false by default)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

class yade.wrapper.VTKRecorder(inherits PeriodicEngine GlobalEngine Engine Serializable)

Engine recording snapshots of simulation into series of *.vtu files, readable by VTK-based postprocessing programs such as Paraview. Both bodies (depending on their shapes) and interactions can be recorded, with various vector/scalar quantities that are defined on them.

PeriodicEngine.initRun is initialized to True automatically.

property Key

Necessary if recorders contains ‘cracks’ or ‘moments’. A string specifying the name of file ‘cracks___.txt’ that is considered in this case (see corresponding attribute).

property ascii

Store data as readable text in the XML file (sets vtkXMLWriter data mode to vtkXMLWriter::Ascii, while the default is Appended)

property compress

Compress output XML files [experimental].

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property fileName

Base file name; it will be appended with {lsBody*,spheres,intrs,facets}.243100.vtu (unless multiblock or multiblockLS is True) depending on active recorders and step number (243100 in this case). It can contain slashes, but the directory must exist already.

property firstIterRun

Sets the step number, at each an engine should be executed for the first time (disabled by default).

property initRun

Run the first time we are called as well.

property iterLast

Tracks step number of last run (auto-updated).

property iterPeriod

Periodicity criterion using step number (deactivated if <= 0)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

If mask defined, only bodies with corresponding groupMask will be exported. If 0, all bodies will be exported.

property multiblock

Use multi-block (.vtm) files to store data, rather than separate .vtu files.

property multiblockLS

For executing, when True and with lsBodies in recorders, a serial export of the LevelSet bodies into one unique multi-block (.vtm) file, rather than a OpenMP export of separate .vtu files, when False. Compatibility with multiblock has not been implemented yet

property nDo

Limit number of executions by this number (deactivated if negative)

property nDone

Track number of executions (cummulative) (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property parallelMode

For MPI parallel runs, each proc writes their own vtu/vtp files. Master proc writes a pvtu/pvtp file containing metadata about worker vtu files. load the pvtu/pvtp in paraview for visualization.

property realLast

Tracks real time of last run (auto-updated).

property realPeriod

Periodicity criterion using real (wall clock, computation, human) time in seconds (deactivated if <=0)

property recorders

List of active recorders (as strings). all (the default value) enables all base (``lsBodies’’ excepted) and generic recorders.

Base recorders

Base recorders save the geometry (unstructured or structured grids) on which other data is defined. They are implicitly activated by many of the other recorders. Each of them creates a new file (or a block, if multiblock is set).

spheres

Saves positions and radii (radii) of spherical particles.

facets

Save facets positions (vertices).

boxes

Save boxes positions (edges).

lsBodies

Exports LevelSet shaped bodies in global frame, after mapping to current positions and orientations their grid with distance fields. A Python function (to use within Paraview) is provided at examples/levelSet/pvVisu.py for helping bodies’ surfaces rendering in Paraview.

intr

Store interactions as lines between nodes at respective particles positions. Additionally stores on interactions (the geom) the signed magnitude of normal force (forceN) and the component-wise absolute value of shear force (absForceT).

Generic recorders

Generic recorders do not depend on specific model being used and save commonly useful data.

id

Saves id’s (field id) of spheres; active only if spheres is active.

mass

Saves masses (field mass) of spheres; active only if spheres is active.

clumpId

Saves id’s of clumps to which each sphere belongs (field clumpId); active only if spheres is active.

colors

Saves colors of spheres and of facets (field color); only active if spheres or facets are activated.

mask

Saves groupMasks of spheres and of facets (field mask); only active if spheres or facets are activated.

materialId

Saves materialID of spheres and of facets; only active if spheres or facets are activated.

coordNumber

Saves coordination number (number of neighbours) of spheres and of facets; only active if spheres or facets are activated.

velocity

Saves linear and angular velocities of spherical particles as Vector3 and length(fields linVelVec, linVelLen and angVelVec, angVelLen respectively``); only effective with spheres.

force

Saves force and torque of spheres, facets and boxes as Vector3 and length (norm); only active if spheres, facets or boxes are activated.

pericell

Saves the shape of the cell (simulation has to be periodic).

bstresses

For spheres (if activated) and while considering the per-particle stress tensors as given by bodyStressTensors, saves the per-particle principal stresses, sigI (most tensile) \(\geq\) sigII \(\geq\) sigIII (most compressive), and the associated principal directions dirI, dirII, dirIII.

Specific recorders

The following should only be activated in when appropriate engines/contact laws are in use, otherwise crashes can occur due to violation of type presuppositions.

cpm

Saves data pertaining to the concrete model: cpmDamage (normalized residual strength averaged on particle), cpmStress (stress on particle); intr is activated automatically by cpm

wpm

Saves data pertaining to the wire particle model: wpmForceNFactor shows the loading factor for the wire, e.g. normal force divided by threshold normal force.

jcfpm

Saves data pertaining to the rock (smooth)-jointed model: damage is defined by JCFpmState.tensBreak + JCFpmState.shearBreak; intr is activated automatically by jcfpm, and on joint or cohesive interactions can be vizualized.

cracks

Saves other data pertaining to the rock model: cracks shows locations where cohesive bonds failed during the simulation, with their types (0/1 for tensile/shear breakages), their sizes (0.5*(R1+R2)), and their normal directions. The corresponding attribute has to be activated, and Key attributes have to be consistent.

moments

Saves data pertaining to the required corresponding attribute:yref:acoustic emissions model<Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM.recordMoments>: moments shows locations of acoustic emissions, the number of broken bonds comprising the acoustic emission, the magnitude.

thermal

Saves temperature of bodies computed using Yade’s ThermalEngine.

liquid

Saves the liquid volume associated with capillary models.

cohfrict

Saves interaction information associated with the cohesive frictional model, including isBroken, unp, and breakType.

SPH

Saves sphere information associated with Yade’s SPH module.

deform

Saves interaction information associated with Yade’s deformation module.

lubrication

Saves lubrications stress from LubricationPhys. spheres must be active.

partialsat

Saves suction and radii changes of spheres associated with PartialSatClayEngine. spheres must be active.

hertz

Saves bond data from hertzmindlin such as displacement or ‘broken’ where broken follows a displacement criteria set by user in Law2_ScGeom_MindlinPhys_Mindlin.

property skipFacetIntr

Skip interactions that are not of sphere-sphere type (e.g. sphere-facet, sphere-box…), when saving interactions

property skipNondynamic

Skip non-dynamic spheres (but not facets).

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property virtLast

Tracks virtual time of last run (auto-updated).

property virtPeriod

Periodicity criterion using virtual (simulation) time (deactivated if <= 0)

BoundaryController

digraph BoundaryController {
        rankdir=RL;
        margin="0.2,0.05";
        "BoundaryController" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.BoundaryController"];
        "TriaxialCompressionEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TriaxialCompressionEngine"];
        "TriaxialCompressionEngine" -> "TriaxialStressController" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "KinemSimpleShearBox" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.KinemSimpleShearBox"];
        "KinemSimpleShearBox" -> "BoundaryController" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "UniaxialStrainer" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.UniaxialStrainer"];
        "UniaxialStrainer" -> "BoundaryController" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Disp2DPropLoadEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Disp2DPropLoadEngine"];
        "Disp2DPropLoadEngine" -> "BoundaryController" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PeriIsoCompressor" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PeriIsoCompressor"];
        "PeriIsoCompressor" -> "BoundaryController" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "VESupportEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.VESupportEngine"];
        "VESupportEngine" -> "BoundaryController" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "KinemCNSEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.KinemCNSEngine"];
        "KinemCNSEngine" -> "KinemSimpleShearBox" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "KinemCNDEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.KinemCNDEngine"];
        "KinemCNDEngine" -> "KinemSimpleShearBox" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Peri3dController" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Peri3dController"];
        "Peri3dController" -> "BoundaryController" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "KinemCNLEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.KinemCNLEngine"];
        "KinemCNLEngine" -> "KinemSimpleShearBox" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PeriTriaxController" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PeriTriaxController"];
        "PeriTriaxController" -> "BoundaryController" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ThreeDTriaxialEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ThreeDTriaxialEngine"];
        "ThreeDTriaxialEngine" -> "TriaxialStressController" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "KinemCTDEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.KinemCTDEngine"];
        "KinemCTDEngine" -> "KinemSimpleShearBox" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "TriaxialStressController" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TriaxialStressController"];
        "TriaxialStressController" -> "BoundaryController" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of BoundaryController.

class yade.wrapper.BoundaryController(inherits GlobalEngine Engine Serializable)

Base for engines controlling boundary conditions of simulations. Not to be used directly.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Disp2DPropLoadEngine(inherits BoundaryController GlobalEngine Engine Serializable)

Disturbs a simple shear sample in a given displacement direction

This engine allows one to apply, on a simple shear sample, a loading controlled by du/dgamma = cste, which is equivalent to du + cste’ * dgamma = 0 (proportionnal path loadings). To do so, the upper plate of the simple shear box is moved in a given direction (corresponding to a given du/dgamma), whereas lateral plates are moved so that the box remains closed. This engine can easily be used to perform directionnal probes, with a python script launching successivly the same .xml which contains this engine, after having modified the direction of loading (see theta attribute). That’s why this Engine contains a saveData procedure which can save data on the state of the sample at the end of the loading (in case of successive loadings - for successive directions - through a python script, each line would correspond to one direction of loading).

property Key

string to add at the names of the saved files, and of the output file filled by saveData

property LOG

boolean controling the output of messages on the screen

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property id_boxback

the id of the wall at the back of the sample

property id_boxbas

the id of the lower wall

property id_boxfront

the id of the wall in front of the sample

property id_boxleft

the id of the left wall

property id_boxright

the id of the right wall

property id_topbox

the id of the upper wall

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nbre_iter

the number of iterations of loading to perform

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property theta

the angle, in a (gamma,h=-u) plane from the gamma - axis to the perturbation vector (trigo wise) [degrees]

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property v

the speed at which the perturbation is imposed. In case of samples which are more sensitive to normal loadings than tangential ones, one possibility is to take v = V_shear - | (V_shear-V_comp)*sin(theta) | => v=V_shear in shear; V_comp in compression [m/s]

class yade.wrapper.KinemCNDEngine(inherits KinemSimpleShearBox BoundaryController GlobalEngine Engine Serializable)

To apply a Constant Normal Displacement (CND) shear for a parallelogram box

This engine, designed for simulations implying a simple shear box (SimpleShear Preprocessor or scripts/simpleShear.py), allows one to perform a constant normal displacement shear, by translating horizontally the upper plate, while the lateral ones rotate so that they always keep contact with the lower and upper walls.

property Key

string to add at the names of the saved files

property LOG

boolean controling the output of messages on the screen

property alpha

the angle from the lower box to the left box (trigo wise). Measured by this Engine. Has to be saved, but not to be changed by the user.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property f0

the (vertical) force acting on the upper plate on the very first time step (determined by the Engine). Controls of the loadings in case of KinemCNSEngine or KinemCNLEngine will be done according to this initial value [\(N\)]. Has to be saved, but not to be changed by the user.

property firstRun

boolean set to false as soon as the engine has done its job one time : useful to know if initial height of, and normal force sustained by, the upper box are known or not (and thus if they have to be initialized). Has to be saved, but not to be changed by the user.

property gamma

the current value of the tangential displacement

property gamma_save

vector with the values of gamma at which a save of the simulation is performed [m]

property gammalim

the value of the tangential displacement at wich the displacement is stopped [m]

property id_boxback

the id of the wall at the back of the sample

property id_boxbas

the id of the lower wall

property id_boxfront

the id of the wall in front of the sample

property id_boxleft

the id of the left wall

property id_boxright

the id of the right wall

property id_topbox

the id of the upper wall

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property max_vel

to limit the speed of the vertical displacements done to control \(\sigma\) (CNL or CNS cases) [\(m/s\)]

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property shearSpeed

the speed at which the shear is performed : speed of the upper plate [m/s]

property temoin_save

vector (same length as ‘gamma_save’ for ex), with 0 or 1 depending whether the save for the corresponding value of gamma has been done (1) or not (0). Has to be saved, but not to be changed by the user.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wallDamping

the vertical displacements done to to control \(\sigma\) (CNL or CNS cases) are in fact damped, through this wallDamping

property y0

the height of the upper plate at the very first time step : the engine finds its value [\(m\)]. Has to be saved, but not to be changed by the user.

class yade.wrapper.KinemCNLEngine(inherits KinemSimpleShearBox BoundaryController GlobalEngine Engine Serializable)

To apply a constant normal stress shear (i.e. Constant Normal Load : CNL) for a parallelogram box (simple shear box : SimpleShear Preprocessor or scripts/simpleShear.py)

This engine allows one to translate horizontally the upper plate while the lateral ones rotate so that they always keep contact with the lower and upper walls.

In fact the upper plate can move not only horizontally but also vertically, so that the normal stress acting on it remains constant (this constant value is not chosen by the user but is the one that exists at the beginning of the simulation)

The right vertical displacements which will be allowed are computed from the rigidity Kn of the sample over the wall (so to cancel a deltaSigma, a normal dplt deltaSigma*S/(Kn) is set)

The movement is moreover controlled by the user via a shearSpeed which will be the speed of the upper wall, and by a maximum value of horizontal displacement gammalim, after which the shear stops.

Note

Not only the positions of walls are updated but also their speeds, which is all but useless considering the fact that in the contact laws these velocities of bodies are used to compute values of tangential relative displacements.

Warning

Because of this last point, if you want to use later saves of simulations executed with this Engine, but without that stopMovement was executed, your boxes will keep their speeds => you will have to cancel them ‘by hand’ in the .xml.

property Key

string to add at the names of the saved files

property LOG

boolean controling the output of messages on the screen

property alpha

the angle from the lower box to the left box (trigo wise). Measured by this Engine. Has to be saved, but not to be changed by the user.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property f0

the (vertical) force acting on the upper plate on the very first time step (determined by the Engine). Controls of the loadings in case of KinemCNSEngine or KinemCNLEngine will be done according to this initial value [\(N\)]. Has to be saved, but not to be changed by the user.

property firstRun

boolean set to false as soon as the engine has done its job one time : useful to know if initial height of, and normal force sustained by, the upper box are known or not (and thus if they have to be initialized). Has to be saved, but not to be changed by the user.

property gamma

current value of tangential displacement [m]

property gamma_save

vector with the values of gamma at which a save of the simulation is performed [m]

property gammalim

the value of tangential displacement (of upper plate) at wich the shearing is stopped [m]

property id_boxback

the id of the wall at the back of the sample

property id_boxbas

the id of the lower wall

property id_boxfront

the id of the wall in front of the sample

property id_boxleft

the id of the left wall

property id_boxright

the id of the right wall

property id_topbox

the id of the upper wall

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property max_vel

to limit the speed of the vertical displacements done to control \(\sigma\) (CNL or CNS cases) [\(m/s\)]

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property shearSpeed

the speed at wich the shearing is performed : speed of the upper plate [m/s]

property temoin_save

vector (same length as ‘gamma_save’ for ex), with 0 or 1 depending whether the save for the corresponding value of gamma has been done (1) or not (0). Has to be saved, but not to be changed by the user.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wallDamping

the vertical displacements done to to control \(\sigma\) (CNL or CNS cases) are in fact damped, through this wallDamping

property y0

the height of the upper plate at the very first time step : the engine finds its value [\(m\)]. Has to be saved, but not to be changed by the user.

class yade.wrapper.KinemCNSEngine(inherits KinemSimpleShearBox BoundaryController GlobalEngine Engine Serializable)

To apply a Constant Normal Stifness (CNS) shear for a parallelogram box (simple shear)

This engine, useable in simulations implying one deformable parallelepipedic box, allows one to translate horizontally the upper plate while the lateral ones rotate so that they always keep contact with the lower and upper walls. The upper plate can move not only horizontally but also vertically, so that the normal rigidity defined by DeltaF(upper plate)/DeltaU(upper plate) = constant (= KnC defined by the user).

The movement is moreover controlled by the user via a shearSpeed which is the horizontal speed of the upper wall, and by a maximum value of horizontal displacement gammalim (of the upper plate), after which the shear stops.

Note

not only the positions of walls are updated but also their speeds, which is all but useless considering the fact that in the contact laws these velocities of bodies are used to compute values of tangential relative displacements.

Warning

But, because of this last point, if you want to use later saves of simulations executed with this Engine, but without that stopMovement was executed, your boxes will keep their speeds => you will have to cancel them by hand in the .xml

property Key

string to add at the names of the saved files

property KnC

the normal rigidity chosen by the user [MPa/mm] - the conversion in Pa/m will be made

property LOG

boolean controling the output of messages on the screen

property alpha

the angle from the lower box to the left box (trigo wise). Measured by this Engine. Has to be saved, but not to be changed by the user.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property f0

the (vertical) force acting on the upper plate on the very first time step (determined by the Engine). Controls of the loadings in case of KinemCNSEngine or KinemCNLEngine will be done according to this initial value [\(N\)]. Has to be saved, but not to be changed by the user.

property firstRun

boolean set to false as soon as the engine has done its job one time : useful to know if initial height of, and normal force sustained by, the upper box are known or not (and thus if they have to be initialized). Has to be saved, but not to be changed by the user.

property gamma

current value of tangential displacement [m]

property gammalim

the value of tangential displacement (of upper plate) at wich the shearing is stopped [m]

property id_boxback

the id of the wall at the back of the sample

property id_boxbas

the id of the lower wall

property id_boxfront

the id of the wall in front of the sample

property id_boxleft

the id of the left wall

property id_boxright

the id of the right wall

property id_topbox

the id of the upper wall

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property max_vel

to limit the speed of the vertical displacements done to control \(\sigma\) (CNL or CNS cases) [\(m/s\)]

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property shearSpeed

the speed at wich the shearing is performed : speed of the upper plate [m/s]

property temoin_save

vector (same length as ‘gamma_save’ for ex), with 0 or 1 depending whether the save for the corresponding value of gamma has been done (1) or not (0). Has to be saved, but not to be changed by the user.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wallDamping

the vertical displacements done to to control \(\sigma\) (CNL or CNS cases) are in fact damped, through this wallDamping

property y0

the height of the upper plate at the very first time step : the engine finds its value [\(m\)]. Has to be saved, but not to be changed by the user.

class yade.wrapper.KinemCTDEngine(inherits KinemSimpleShearBox BoundaryController GlobalEngine Engine Serializable)

To compress a simple shear sample by moving the upper box in a vertical way only, so that the tangential displacement (defined by the horizontal gap between the upper and lower boxes) remains constant (thus, the CTD = Constant Tangential Displacement). The lateral boxes move also to keep always contact. All that until this box is submitted to a given stress (targetSigma). Moreover saves are executed at each value of stresses stored in the vector sigma_save, and at targetSigma

property Key

string to add at the names of the saved files

property LOG

boolean controling the output of messages on the screen

property alpha

the angle from the lower box to the left box (trigo wise). Measured by this Engine. Has to be saved, but not to be changed by the user.

property compSpeed

(vertical) speed of the upper box : >0 for real compression, <0 for unloading [\(m/s\)]

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property f0

the (vertical) force acting on the upper plate on the very first time step (determined by the Engine). Controls of the loadings in case of KinemCNSEngine or KinemCNLEngine will be done according to this initial value [\(N\)]. Has to be saved, but not to be changed by the user.

property firstRun

boolean set to false as soon as the engine has done its job one time : useful to know if initial height of, and normal force sustained by, the upper box are known or not (and thus if they have to be initialized). Has to be saved, but not to be changed by the user.

property id_boxback

the id of the wall at the back of the sample

property id_boxbas

the id of the lower wall

property id_boxfront

the id of the wall in front of the sample

property id_boxleft

the id of the left wall

property id_boxright

the id of the right wall

property id_topbox

the id of the upper wall

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property max_vel

to limit the speed of the vertical displacements done to control \(\sigma\) (CNL or CNS cases) [\(m/s\)]

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property sigma_save

vector with the values of sigma at which a save of the simulation should be performed [\(kPa\)]

property targetSigma

the value of sigma at which the compression should stop [\(kPa\)]

property temoin_save

vector (same length as ‘gamma_save’ for ex), with 0 or 1 depending whether the save for the corresponding value of gamma has been done (1) or not (0). Has to be saved, but not to be changed by the user.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wallDamping

the vertical displacements done to to control \(\sigma\) (CNL or CNS cases) are in fact damped, through this wallDamping

property y0

the height of the upper plate at the very first time step : the engine finds its value [\(m\)]. Has to be saved, but not to be changed by the user.

class yade.wrapper.KinemSimpleShearBox(inherits BoundaryController GlobalEngine Engine Serializable)

This class is supposed to be a mother class for all Engines performing loadings on the simple shear box of SimpleShear. It is not intended to be used by itself, but its declaration and implentation will thus contain all what is useful for all these Engines. The script simpleShear.py illustrates the use of the various corresponding Engines.

property Key

string to add at the names of the saved files

property LOG

boolean controling the output of messages on the screen

property alpha

the angle from the lower box to the left box (trigo wise). Measured by this Engine. Has to be saved, but not to be changed by the user.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property f0

the (vertical) force acting on the upper plate on the very first time step (determined by the Engine). Controls of the loadings in case of KinemCNSEngine or KinemCNLEngine will be done according to this initial value [\(N\)]. Has to be saved, but not to be changed by the user.

property firstRun

boolean set to false as soon as the engine has done its job one time : useful to know if initial height of, and normal force sustained by, the upper box are known or not (and thus if they have to be initialized). Has to be saved, but not to be changed by the user.

property id_boxback

the id of the wall at the back of the sample

property id_boxbas

the id of the lower wall

property id_boxfront

the id of the wall in front of the sample

property id_boxleft

the id of the left wall

property id_boxright

the id of the right wall

property id_topbox

the id of the upper wall

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property max_vel

to limit the speed of the vertical displacements done to control \(\sigma\) (CNL or CNS cases) [\(m/s\)]

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property temoin_save

vector (same length as ‘gamma_save’ for ex), with 0 or 1 depending whether the save for the corresponding value of gamma has been done (1) or not (0). Has to be saved, but not to be changed by the user.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wallDamping

the vertical displacements done to to control \(\sigma\) (CNL or CNS cases) are in fact damped, through this wallDamping

property y0

the height of the upper plate at the very first time step : the engine finds its value [\(m\)]. Has to be saved, but not to be changed by the user.

class yade.wrapper.Peri3dController(inherits BoundaryController GlobalEngine Engine Serializable)

Class for controlling independently all 6 components of “engineering” stress and strain of periodic Cell. goal are the goal values, while stressMask determines which components prescribe stress and which prescribe strain.

If the strain is prescribed, appropriate strain rate is directly applied. If the stress is prescribed, the strain predictor is used: from stress values in two previous steps the value of strain rate is prescribed so as the value of stress in the next step is as close as possible to the ideal one. Current algorithm is extremly simple and probably will be changed in future, but is roboust enough and mostly works fine.

Stress error (difference between actual and ideal stress) is evaluated in current and previous steps (\(\mathrm{d}\sigma_i,\mathrm{d}\sigma_{i-1}\)). Linear extrapolation is used to estimate error in the next step

\[\mathrm{d}\sigma_{i+1}=2\mathrm{d}\sigma_i - \mathrm{d}\sigma_{i-1}\]

According to this error, the strain rate is modified by mod parameter

\[\begin{split}\mathrm{d}\sigma_{i+1}\left\{\begin{array}{c} >0 \rightarrow \dot{\varepsilon}_{i+1} = \dot{\varepsilon}_i - \max(\mathrm{abs}(\dot{\boldsymbol{\varepsilon}}_i))\cdot\mathrm{mod} \\ <0 \rightarrow \dot{\varepsilon}_{i+1} = \dot{\varepsilon}_i + \max(\mathrm{abs}(\dot{\boldsymbol{\varepsilon}}_i))\cdot\mathrm{mod} \end{array}\right.\end{split}\]

According to this fact, the prescribed stress will (almost) never have exact prescribed value, but the difference would be very small (and decreasing for increasing nSteps. This approach works good if one of the dominant strain rates is prescribed. If all stresses are prescribed or if all goal strains is prescribed as zero, a good estimation is needed for the first step, therefore the compliance matrix is estimated (from user defined estimations of macroscopic material parameters youngEstimation and poissonEstimation) and respective strain rates is computed form prescribed stress rates and compliance matrix (the estimation of compliance matrix could be computed autamatically avoiding user inputs of this kind).

The simulation on rotated periodic cell is also supported. Firstly, the polar decomposition is performed on cell’s transformation matrix trsf \(\mathcal{T}=\mat{U}\mat{P}\), where \(\mat{U}\) is orthogonal (unitary) matrix representing rotation and \(\mat{P}\) is a positive semi-definite Hermitian matrix representing strain. A logarithm of \(\mat{P}\) should be used to obtain realistic values at higher strain values (not implemented yet). A prescribed strain increment in global coordinates \(\mathrm{d}t\cdot\dot{\boldsymbol{\varepsilon}}\) is properly rotated to cell’s local coordinates and added to \(\mat{P}\)

\[\mat{P}_{i+1}=\mat{P}+\mat{U}^{\mathsf{T}}\mathrm{d}t\cdot\dot{\boldsymbol{\varepsilon}}\mat{U}\]

The new value of trsf is computed at \(\mat{T}_{i+1}=\mat{UP}_{i+1}\). From current and next trsf the cell’s velocity gradient velGrad is computed (according to its definition) as

\[\mat{V} = (\mat{T}_{i+1}\mat{T}^{-1}-\mat{I})/\mathrm{d}t\]

Current implementation allow user to define independent loading “path” for each prescribed component. i.e. define the prescribed value as a function of time (or progress or steps). See Paths.

Examples examples/test/peri3dController_example1.py and examples/test/peri3dController_triaxialCompression.py explain usage and inputs of Peri3dController, examples/test/peri3dController_shear.py is an example of using shear components and also simulation on rotated cell.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property doneHook

Python command (as string) to run when nSteps is achieved. If empty, the engine will be set dead.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property goal

Goal state; only the upper triangular matrix is considered; each component is either prescribed stress or strain, depending on stressMask.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property lenPe

Peri3dController internal variable

property lenPs

Peri3dController internal variable

property maxStrain

Maximal asolute value of strain allowed in the simulation. If reached, the simulation is considered as finished

property maxStrainRate

Maximal absolute value of strain rate (both normal and shear components of strain)

property mod

Predictor modificator, by trail-and-error analysis the value 0.1 was found as the best.

property nSteps

Number of steps of the simulation.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property pathSizes

Peri3dController internal variable

property pathsCounter

Peri3dController internal variable

property pe

Peri3dController internal variable

property poissonEstimation

Estimation of macroscopic Poisson’s ratio, used used for the first simulation step

property progress

Actual progress of the simulation with Controller.

property ps

Peri3dController internal variable

property strain

Current strain (deformation) vector (\(\varepsilon_x\),\(\varepsilon_y\),\(\varepsilon_z\),\(\gamma_{yz}\),\(\gamma_{zx}\),\(\gamma_{xy}\)) (auto-updated).

property strainGoal

Peri3dController internal variable

property strainRate

Current strain rate vector.

property stress

Current stress vector (\(\sigma_x\),\(\sigma_y\),\(\sigma_z\),\(\tau_{yz}\),\(\tau_{zx}\),\(\tau_{xy}\))|yupdate|.

property stressGoal

Peri3dController internal variable

property stressIdeal

Ideal stress vector at current time step.

property stressMask

mask determining whether components of goal are strain (0) or stress (1). The order is 00,11,22,12,02,01 from the least significant bit. (e.g. 0b000011 is stress 00 and stress 11).

property stressRate

Current stress rate vector (that is prescribed, the actual one slightly differ).

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property xxPath

“Time function” (piecewise linear) for xx direction. Sequence of couples of numbers. First number is time, second number desired value of respective quantity (stress or strain). The last couple is considered as final state (equal to (nSteps, goal)), other values are relative to this state.

Example: nSteps=1000, goal[0]=300, xxPath=((2,3),(4,1),(5,2))

at step 400 (=5*1000/2) the value is 450 (=3*300/2),

at step 800 (=4*1000/5) the value is 150 (=1*300/2),

at step 1000 (=5*1000/5=nSteps) the value is 300 (=2*300/2=goal[0]).

See example scripts/test/peri3dController_example1 for illusration.

property xyPath

Time function for xy direction, see xxPath

property youngEstimation

Estimation of macroscopic Young’s modulus, used for the first simulation step

property yyPath

Time function for yy direction, see xxPath

property yzPath

Time function for yz direction, see xxPath

property zxPath

Time function for zx direction, see xxPath

property zzPath

Time function for zz direction, see xxPath

class yade.wrapper.PeriIsoCompressor(inherits BoundaryController GlobalEngine Engine Serializable)

Compress/decompress cloud of spheres by controlling periodic cell size until it reaches prescribed average stress, then moving to next stress value in given stress series.

property charLen

Characteristic length, should be something like mean particle diameter (default -1=invalid value))

property currUnbalanced

Current value of unbalanced force

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property doneHook

Python command to be run when reaching the last specified stress

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property globalUpdateInt

how often to recompute average stress, stiffness and unbalanced force

property keepProportions

Exactly keep proportions of the cell (stress is controlled based on average, not its components

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property maxSpan

Maximum body span in terms of bbox, to prevent periodic cell getting too small. (auto-computed)

property maxUnbalanced

if actual unbalanced force is smaller than this number, the packing is considered stable,

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property sigma

Current stress value

property state

Where are we at in the stress series

property stresses

Stresses that should be reached, one after another

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.PeriTriaxController(inherits BoundaryController GlobalEngine Engine Serializable)

Engine for independently controlling stress or strain in periodic simulations.

PeriTriaxController.goal contains absolute values for the controlled quantity, and PeriTriaxController.stressMask determines meaning of those values (0 for strain, 1 for stress): e.g. ( 1<<0 | 1<<2 ) = 1 | 4 = 5 means that goal[0] and goal[2] are stress values, and goal[1] is strain.

See scripts/test/periodic-triax.py for a simple example.

property absStressTol

Absolute stress tolerance

property currUnbalanced

current unbalanced force (updated every globUpdate) (auto-updated)

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property doneHook

python command to be run when the desired state is reached

property dynCell

Imposed stress can be controlled using the packing stiffness or by applying the laws of dynamic (dynCell=true). Don’t forget to assign a mass to the cell.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property externalWork

Work input from boundary controller.

property globUpdate

How often to recompute average stress, stiffness and unbalaced force.

property goal

Desired stress or strain values (depending on stressMask), strains defined as strain(i)=log(Fii).

Warning

Strains are relative to the O.cell.refSize (reference cell size), not the current one (e.g. at the moment when the new strain value is set).

property growDamping

Damping of cell resizing (0=perfect control, 1=no control at all); see also wallDamping in TriaxialStressController.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mass

mass of the cell (user set); if not set and dynCell is used, it will be computed as sum of masses of all particles.

property maxBodySpan

maximum body dimension (auto-computed)

property maxStrainRate

Maximum strain rate of the periodic cell.

property maxUnbalanced

maximum unbalanced force.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property prevGrow

previous cell grow

property relStressTol

Relative stress tolerance

property stiff

average stiffness (only every globUpdate steps recomputed from interactions) (auto-updated)

property strain

cell strain (auto-updated)

property strainRate

cell strain rate (auto-updated)

property stress

diagonal terms of the stress tensor

property stressMask

mask determining strain/stress (0/1) meaning for goal components

property stressTensor

average stresses, updated at every step (only every globUpdate steps recomputed from interactions if !dynCell)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.ThreeDTriaxialEngine(inherits TriaxialStressController BoundaryController GlobalEngine Engine Serializable)

The engine perform a triaxial compression with a control in direction ‘i’ in stress (if stressControl_i) else in strain.

For a stress control the imposed stress is specified by ‘sigma_i’ with a ‘max_veli’ depending on ‘strainRatei’. To obtain the same strain rate in stress control than in strain control you need to set ‘wallDamping = 0.8’. For a strain control the imposed strain is specified by ‘strainRatei’. With this engine you can also perform internal compaction by growing the size of particles by using TriaxialStressController::controlInternalStress. For that, just switch on ‘internalCompaction=1’ and fix sigma_iso=value of mean pressure that you want at the end of the internal compaction.

Warning

This engine is deprecated, please switch to TriaxialStressController if you expect long term support.

property Key

A string appended at the end of all files, use it to name simulations.

property UnbalancedForce

mean resultant forces divided by mean contact force

property boxVolume

Total packing volume.

property computeStressStrainInterval

property currentStrainRate1

current strain rate in direction 1 - converging to ThreeDTriaxialEngine::strainRate1 (./s)

property currentStrainRate2

current strain rate in direction 2 - converging to ThreeDTriaxialEngine::strainRate2 (./s)

property currentStrainRate3

current strain rate in direction 3 - converging to ThreeDTriaxialEngine::strainRate3 (./s)

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property depth

size of the box (2-axis) (auto-updated)

property depth0

Reference size for strain definition. See TriaxialStressController::depth

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property externalWork

Mechanical work associated to the boundary conditions, i.e. \(\int_{\partial \Omega} \mat{T} \cdot \mat{u} ds\) with \(\mat{T}\) the surface traction and \(\mat{u}\) the displacement at the boundary. (auto-updated)

property finalMaxMultiplier

max multiplier of diameters during internal compaction (secondary precise adjustment - TriaxialStressController::maxMultiplier is used in the initial stage)

property frictionAngleDegree

Value of friction used in the simulation if (updateFrictionAngle)

property goal1

prescribed stress/strain rate on axis 1, as defined by TriaxialStressController::stressMask

property goal2

prescribed stress/strain rate on axis 2, as defined by TriaxialStressController::stressMask

property goal3

prescribed stress/strain rate on axis 3, as defined by TriaxialStressController::stressMask

property height

size of the box (1-axis) (auto-updated)

property height0

Reference size for strain definition. See TriaxialStressController::height

property internalCompaction

Switch between ‘external’ (walls) and ‘internal’ (growth of particles) compaction.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property maxMultiplier

max multiplier of diameters during internal compaction (initial fast increase - TriaxialStressController::finalMaxMultiplier is used in a second stage)

property max_vel

Maximum allowed walls velocity [m/s]. This value superseeds the one assigned by the stress controller if the later is higher. max_vel can be set to infinity in many cases, but sometimes helps stabilizing packings. Based on this value, different maxima are computed for each axis based on the dimensions of the sample, so that if each boundary moves at its maximum velocity, the strain rate will be isotropic (see e.g. TriaxialStressController::max_vel1).

property max_vel1

see TriaxialStressController::max_vel (auto-computed)

property max_vel2

see TriaxialStressController::max_vel (auto-computed)

property max_vel3

see TriaxialStressController::max_vel (auto-computed)

property meanStress

Mean stress in the packing. (auto-updated)

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property particlesVolume

Total volume of particles (clumps and dynamic spheres). (auto-computed)

property porosity

Porosity of the packing, computed from particlesVolume and boxVolume. (auto-updated)

property previousMultiplier

(auto-updated)

property previousStress

(auto-updated)

property radiusControlInterval

setContactProperties((ThreeDTriaxialEngine)arg1, (float)arg2) None :

Assign a new friction angle (degrees) to dynamic bodies and relative interactions

property spheresVolume

Shorthand for TriaxialStressController::particlesVolume

property stiffnessUpdateInterval

iteration period for measuring the resultant packing-boundaries stiffnesses, for stress servo-control

property strain

Current strain in a vector (exx,eyy,ezz). The values reflect true (logarithmic) strain.

property strainDamping

factor used for smoothing changes in effective strain rate. If target rate is TR, then (1-damping)*(TR-currentRate) will be added at each iteration. With damping=0, rate=target all the time. With damping=1, it doesn’t change.

strainRate((TriaxialStressController)arg1) Vector3 :

Current strain rate in a vector d/dt(exx,eyy,ezz).

property strainRate1

target strain rate in direction 1 (./s, >0 for compression)

property strainRate2

target strain rate in direction 2 (./s, >0 for compression)

property strainRate3

target strain rate in direction 3 (./s, >0 for compression)

stress((TriaxialStressController)arg1, (int)id) Vector3 :

Returns the average stress on boundary ‘id’. Here, ‘id’ refers to the internal numbering of boundaries, between 0 and 5.

property stressControl_1

Switch to choose a stress or a strain control in directions 1

property stressControl_2

Switch to choose a stress or a strain control in directions 2

property stressControl_3

Switch to choose a stress or a strain control in directions 3

property stressDamping

wall damping coefficient for the stress control - wallDamping=0 implies a (theoretical) perfect control, wallDamping=1 means no movement

property stressMask

Bitmask determining wether the imposed goal values are stresses (0 for none, 7 for all, 1 for direction 1, 5 for directions 1 and 3, etc.) or strain rates

property thickness

thickness of boxes (needed by some functions)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property updateFrictionAngle

Switch to activate the update of the intergranular frictionto the value ThreeDTriaxialEngine::frictionAngleDegree.

property updatePorosity

If true, solid volume will be updated once (will automatically reset to false after one calculation step) e.g. for porosity calculation purpose. Can be used when volume of particles changes during the simulation (e.g. when particles are erased or when clumps are created).

property volumetricStrain

Volumetric strain (see TriaxialStressController::strain). (auto-updated)

property wall_back_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_back_id

id of boundary ; coordinate 2- (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_bottom_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_bottom_id

id of boundary ; coordinate 1- (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_front_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_front_id

id of boundary ; coordinate 2+ (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_left_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_left_id

id of boundary ; coordinate 0- (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_right_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_right_id

id of boundary ; coordinate 0+ (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_top_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_top_id

id of boundary ; coordinate 1+ (default value is ok if aabbWalls are appended BEFORE spheres.)

property width

size of the box (0-axis) (auto-updated)

property width0

Reference size for strain definition. See TriaxialStressController::width

class yade.wrapper.TriaxialCompressionEngine(inherits TriaxialStressController BoundaryController GlobalEngine Engine Serializable)

The engine is a state machine with the following states; transitions my be automatic, see below.

  1. STATE_ISO_COMPACTION: isotropic compaction (compression) until the prescribed mean pressue sigmaIsoCompaction is reached and the packing is stable. The compaction happens either by straining the walls (!internalCompaction) or by growing size of grains (internalCompaction).

  2. STATE_ISO_UNLOADING: isotropic unloading from the previously reached state, until the mean pressure sigmaLateralConfinement is reached (and stabilizes).

    Note

    this state will be skipped if sigmaLateralConfinement == sigmaIsoCompaction.

  3. STATE_TRIAX_LOADING: confined uniaxial compression: constant sigmaLateralConfinement is kept at lateral walls (left, right, front, back), while top and bottom walls load the packing in their axis (by straining), until the value of epsilonMax (deformation along the loading axis) is reached. At this point, the simulation is stopped.

  4. STATE_FIXED_POROSITY_COMPACTION: isotropic compaction (compression) until a chosen porosity value (parameter:fixedPorosity). The six walls move with a chosen translation speed (parameter StrainRate).

  5. STATE_TRIAX_LIMBO: currently unused, since simulation is hard-stopped in the previous state.

Transition from COMPACTION to UNLOADING is done automatically if autoUnload==true;

Transition from (UNLOADING to LOADING) or from (COMPACTION to LOADING: if UNLOADING is skipped) is done automatically if autoCompressionActivation=true; Both autoUnload and autoCompressionActivation are true by default.

Note

Most of the algorithms used have been developed initialy for simulations reported in [Chareyre2002a] and [Chareyre2005]. They have been ported to Yade in a second step and used in e.g. [Kozicki2008],[Scholtes2009b]_,[Jerier2010b].

Warning

This engine is deprecated, please switch to TriaxialStressController if you expect long term support.

property Key

A string appended at the end of all files, use it to name simulations.

property StabilityCriterion

tolerance in terms of TriaxialCompressionEngine::UnbalancedForce to consider the packing is stable

property UnbalancedForce

mean resultant forces divided by mean contact force

property autoCompressionActivation

Auto-switch from isotropic compaction (or unloading state if sigmaLateralConfinement<sigmaIsoCompaction) to deviatoric loading

property autoStopSimulation

Stop the simulation when the sample reach STATE_LIMBO, or keep running

property autoUnload

Auto-switch from isotropic compaction to unloading

property boxVolume

Total packing volume.

property computeStressStrainInterval

property currentState

There are 5 possible states in which TriaxialCompressionEngine can be. See above wrapper.TriaxialCompressionEngine

property currentStrainRate

current strain rate - converging to TriaxialCompressionEngine::strainRate (./s)

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property depth

size of the box (2-axis) (auto-updated)

property depth0

Reference size for strain definition. See TriaxialStressController::depth

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property epsilonMax

Value of axial deformation for which the loading must stop

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property externalWork

Mechanical work associated to the boundary conditions, i.e. \(\int_{\partial \Omega} \mat{T} \cdot \mat{u} ds\) with \(\mat{T}\) the surface traction and \(\mat{u}\) the displacement at the boundary. (auto-updated)

property finalMaxMultiplier

max multiplier of diameters during internal compaction (secondary precise adjustment - TriaxialStressController::maxMultiplier is used in the initial stage)

property fixedPoroCompaction

A special type of compaction with imposed final porosity TriaxialCompressionEngine::fixedPorosity (WARNING : can give unrealistic results!)

property fixedPorosity

Value of porosity chosen by the user

property frictionAngleDegree

Value of friction assigned just before the deviatoric loading

property goal1

prescribed stress/strain rate on axis 1, as defined by TriaxialStressController::stressMask

property goal2

prescribed stress/strain rate on axis 2, as defined by TriaxialStressController::stressMask

property goal3

prescribed stress/strain rate on axis 3, as defined by TriaxialStressController::stressMask

property height

size of the box (1-axis) (auto-updated)

property height0

Reference size for strain definition. See TriaxialStressController::height

property internalCompaction

Switch between ‘external’ (walls) and ‘internal’ (growth of particles) compaction.

property isAxisymetric

if true, sigma_iso is assigned to sigma1, 2 and 3 (applies at each iteration and overrides user-set values of s1,2,3)

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property maxMultiplier

max multiplier of diameters during internal compaction (initial fast increase - TriaxialStressController::finalMaxMultiplier is used in a second stage)

property maxStress

Max absolute value of axial stress during the simulation (for post-processing)

property max_vel

Maximum allowed walls velocity [m/s]. This value superseeds the one assigned by the stress controller if the later is higher. max_vel can be set to infinity in many cases, but sometimes helps stabilizing packings. Based on this value, different maxima are computed for each axis based on the dimensions of the sample, so that if each boundary moves at its maximum velocity, the strain rate will be isotropic (see e.g. TriaxialStressController::max_vel1).

property max_vel1

see TriaxialStressController::max_vel (auto-computed)

property max_vel2

see TriaxialStressController::max_vel (auto-computed)

property max_vel3

see TriaxialStressController::max_vel (auto-computed)

property meanStress

Mean stress in the packing. (auto-updated)

property noFiles

If true, no files will be generated (*.xml, *.spheres,…)

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property particlesVolume

Total volume of particles (clumps and dynamic spheres). (auto-computed)

property porosity

Porosity of the packing, computed from particlesVolume and boxVolume. (auto-updated)

property previousMultiplier

(auto-updated)

property previousSigmaIso

Previous value of inherited sigma_iso (used to detect manual changes of the confining pressure)

property previousState

Previous state (used to detect manual changes of the state in .xml)

property previousStress

(auto-updated)

property radiusControlInterval

setContactProperties((TriaxialCompressionEngine)arg1, (float)arg2) None :

Assign a new friction angle (degrees) to dynamic bodies and relative interactions

property sigmaIsoCompaction

Prescribed isotropic pressure during the compaction phase (< 0 for real - compressive - compaction)

property sigmaLateralConfinement

Prescribed confining pressure in the deviatoric loading (< 0 for classical compressive cases); might be different from TriaxialCompressionEngine::sigmaIsoCompaction

property sigma_iso

prescribed confining stress (see :yref:TriaxialCompressionEngine::isAxisymetric`)

property spheresVolume

Shorthand for TriaxialStressController::particlesVolume

property stiffnessUpdateInterval

iteration period for measuring the resultant packing-boundaries stiffnesses, for stress servo-control

property strain

Current strain in a vector (exx,eyy,ezz). The values reflect true (logarithmic) strain.

property strainDamping

coefficient used for smoother transitions in the strain rate. The rate reaches the target value like \(d^n\) reaches 0, where \(d\) is the damping coefficient and \(n\) is the number of steps

property strainRate

target strain rate (./s, >0 for compression)

stress((TriaxialStressController)arg1, (int)id) Vector3 :

Returns the average stress on boundary ‘id’. Here, ‘id’ refers to the internal numbering of boundaries, between 0 and 5.

property stressDamping

wall damping coefficient for the stress control - wallDamping=0 implies a (theoretical) perfect control, wallDamping=1 means no movement

property stressMask

Bitmask determining wether the imposed goal values are stresses (0 for none, 7 for all, 1 for direction 1, 5 for directions 1 and 3, etc.) or strain rates

property testEquilibriumInterval

interval of checks for transition between phases, higher than 1 saves computation time.

property thickness

thickness of boxes (needed by some functions)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property translationAxis

compression axis

property uniaxialEpsilonCurr

Current value of axial deformation during confined loading (is reference to strain[1])

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property updatePorosity

If true, solid volume will be updated once (will automatically reset to false after one calculation step) e.g. for porosity calculation purpose. Can be used when volume of particles changes during the simulation (e.g. when particles are erased or when clumps are created).

property volumetricStrain

Volumetric strain (see TriaxialStressController::strain). (auto-updated)

property wall_back_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_back_id

id of boundary ; coordinate 2- (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_bottom_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_bottom_id

id of boundary ; coordinate 1- (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_front_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_front_id

id of boundary ; coordinate 2+ (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_left_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_left_id

id of boundary ; coordinate 0- (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_right_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_right_id

id of boundary ; coordinate 0+ (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_top_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_top_id

id of boundary ; coordinate 1+ (default value is ok if aabbWalls are appended BEFORE spheres.)

property warn

counter used for sending a deprecation warning once

property width

size of the box (0-axis) (auto-updated)

property width0

Reference size for strain definition. See TriaxialStressController::width

class yade.wrapper.TriaxialStressController(inherits BoundaryController GlobalEngine Engine Serializable)

An engine maintaining constant stresses or constant strain rates on some boundaries of a parallepipedic packing. The stress/strain control is defined for each axis using TriaxialStressController::stressMask (a bitMask) and target values are defined by goal1,goal2, and goal3. The sign conventions of continuum mechanics are used for strains and stresses (positive traction).

Note

The algorithms used have been developed initialy for simulations reported in [Chareyre2002a] and [Chareyre2005]. They have been ported to Yade in a second step and used in e.g. [Kozicki2008],[Scholtes2009b]_,[Jerier2010b].

property boxVolume

Total packing volume.

property computeStressStrainInterval

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property depth

size of the box (2-axis) (auto-updated)

property depth0

Reference size for strain definition. See TriaxialStressController::depth

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property externalWork

Mechanical work associated to the boundary conditions, i.e. \(\int_{\partial \Omega} \mat{T} \cdot \mat{u} ds\) with \(\mat{T}\) the surface traction and \(\mat{u}\) the displacement at the boundary. (auto-updated)

property finalMaxMultiplier

max multiplier of diameters during internal compaction (secondary precise adjustment - TriaxialStressController::maxMultiplier is used in the initial stage)

property goal1

prescribed stress/strain rate on axis 1, as defined by TriaxialStressController::stressMask

property goal2

prescribed stress/strain rate on axis 2, as defined by TriaxialStressController::stressMask

property goal3

prescribed stress/strain rate on axis 3, as defined by TriaxialStressController::stressMask

property height

size of the box (1-axis) (auto-updated)

property height0

Reference size for strain definition. See TriaxialStressController::height

property internalCompaction

Switch between ‘external’ (walls) and ‘internal’ (growth of particles) compaction.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property maxMultiplier

max multiplier of diameters during internal compaction (initial fast increase - TriaxialStressController::finalMaxMultiplier is used in a second stage)

property max_vel

Maximum allowed walls velocity [m/s]. This value superseeds the one assigned by the stress controller if the later is higher. max_vel can be set to infinity in many cases, but sometimes helps stabilizing packings. Based on this value, different maxima are computed for each axis based on the dimensions of the sample, so that if each boundary moves at its maximum velocity, the strain rate will be isotropic (see e.g. TriaxialStressController::max_vel1).

property max_vel1

see TriaxialStressController::max_vel (auto-computed)

property max_vel2

see TriaxialStressController::max_vel (auto-computed)

property max_vel3

see TriaxialStressController::max_vel (auto-computed)

property meanStress

Mean stress in the packing. (auto-updated)

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property particlesVolume

Total volume of particles (clumps and dynamic spheres). (auto-computed)

property porosity

Porosity of the packing, computed from particlesVolume and boxVolume. (auto-updated)

property previousMultiplier

(auto-updated)

property previousStress

(auto-updated)

property radiusControlInterval

property spheresVolume

Shorthand for TriaxialStressController::particlesVolume

property stiffnessUpdateInterval

iteration period for measuring the resultant packing-boundaries stiffnesses, for stress servo-control

property strain

Current strain in a vector (exx,eyy,ezz). The values reflect true (logarithmic) strain.

property strainDamping

coefficient used for smoother transitions in the strain rate. The rate reaches the target value like \(d^n\) reaches 0, where \(d\) is the damping coefficient and \(n\) is the number of steps

strainRate((TriaxialStressController)arg1) Vector3 :

Current strain rate in a vector d/dt(exx,eyy,ezz).

stress((TriaxialStressController)arg1, (int)id) Vector3 :

Returns the average stress on boundary ‘id’. Here, ‘id’ refers to the internal numbering of boundaries, between 0 and 5.

property stressDamping

wall damping coefficient for the stress control - wallDamping=0 implies a (theoretical) perfect control, wallDamping=1 means no movement

property stressMask

Bitmask determining wether the imposed goal values are stresses (0 for none, 7 for all, 1 for direction 1, 5 for directions 1 and 3, etc.) or strain rates

property thickness

thickness of boxes (needed by some functions)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property updatePorosity

If true, solid volume will be updated once (will automatically reset to false after one calculation step) e.g. for porosity calculation purpose. Can be used when volume of particles changes during the simulation (e.g. when particles are erased or when clumps are created).

property volumetricStrain

Volumetric strain (see TriaxialStressController::strain). (auto-updated)

property wall_back_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_back_id

id of boundary ; coordinate 2- (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_bottom_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_bottom_id

id of boundary ; coordinate 1- (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_front_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_front_id

id of boundary ; coordinate 2+ (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_left_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_left_id

id of boundary ; coordinate 0- (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_right_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_right_id

id of boundary ; coordinate 0+ (default value is ok if aabbWalls are appended BEFORE spheres.)

property wall_top_activated

if true, this wall moves according to the target value (stress or strain rate).

property wall_top_id

id of boundary ; coordinate 1+ (default value is ok if aabbWalls are appended BEFORE spheres.)

property width

size of the box (0-axis) (auto-updated)

property width0

Reference size for strain definition. See TriaxialStressController::width

class yade.wrapper.UniaxialStrainer(inherits BoundaryController GlobalEngine Engine Serializable)

Axial displacing two groups of bodies in the opposite direction with given strain rate.

property absSpeed

alternatively, absolute speed of boundary motion can be specified; this is effective only at the beginning and if strainRate is not set; changing absSpeed directly during simulation wil have no effect. [ms⁻¹]

property active

Whether this engine is activated

property asymmetry

If 0, straining is symmetric for negIds and posIds; for 1 (or -1), only posIds are strained and negIds don’t move (or vice versa)

property avgStress

Current average stress (auto-updated) [Pa]

property axis

The axis which is strained (0,1,2 for x,y,z)

property blockDisplacements

Whether displacement of boundary bodies perpendicular to the strained axis are blocked or are free

property blockRotations

Whether rotations of boundary bodies are blocked.

property crossSectionArea

crossSection perpendicular to he strained axis; must be given explicitly [m²]

property currentStrainRate

Current strain rate (update automatically). (auto-updated)

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property idleIterations

Number of iterations that will pass without straining activity after stopStrain has been reached

property initAccelTime

Time for strain reaching the requested value (linear interpolation). If negative, the time is dt*(-initAccelTime), where dt is the timestep at the first iteration. [s]

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property limitStrain

Invert the sense of straining (sharply, without transition) one this value of strain is reached. Not effective if 0.

property negIds

Bodies on which strain will be applied (on the negative end along the axis)

property notYetReversed

Flag whether the sense of straining has already been reversed (only used internally).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property originalLength

Distance of reference bodies in the direction of axis before straining started (computed automatically) [m]

property posIds

Bodies on which strain will be applied (on the positive end along the axis)

property setSpeeds

should we set speeds at the beginning directly, instead of increasing strain rate progressively?

property stopStrain

Strain at which we will pause simulation; inactive (nan) by default; must be reached from below (in absolute value)

property strain

Current strain value, elongation/originalLength (auto-updated) [-]

property strainRate

Rate of strain, starting at 0, linearly raising to strainRate. [-]

property stressUpdateInterval

How often to recompute stress on supports.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.VESupportEngine(inherits BoundaryController GlobalEngine Engine Serializable)

Engine that constraints given bodies in place (refPos) with a visco-elastic constrain according to the Burgers model.

_images/rheological-scheme.png

Burger’s rheological scheme with adopted designations.

The model of applied constraint can be degenerated to simpler models. Passing negative value of the damping coefficient turns off the corresponding dashpot. A negative value of c2, turns off the whole Kelvin-Voigt branch. By default c1=c2=-1, and model is simplified to an elastic boundary condition. Hence, it can be used as Winkler foundation.

Potential applicatons are presented in [Brzezinski2022], and examples section (see examples/viscoelastic-supports/single-element.py, and examples/viscoelastic-supports/discrete-foundation.py

property bIds

IDs of bodies that should be attached to supports.

property c1

Damping coeff. of dashpot #1 (the one in Maxwell branch). Negative value turns off the dashpot. [N*s/m]

property c2

Damping coeff. of dashpot #2 (the one in Kelvin-Voigt branch). Negative value turns off whole Kelvin-Voigt branch. [N*s/m]

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property k1

Stiffness of spring #1 (the one in Maxwell branch) [N/m]

property k2

Stiffness of spring #2 (the one in Kelvin-Voigt branch) [N/m]

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

Collider

digraph Collider {
        rankdir=RL;
        margin="0.2,0.05";
        "Collider" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Collider"];
        "GeneralIntegratorInsertionSortCollider" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GeneralIntegratorInsertionSortCollider"];
        "GeneralIntegratorInsertionSortCollider" -> "InsertionSortCollider" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "InsertionSortCollider" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.InsertionSortCollider"];
        "InsertionSortCollider" -> "Collider" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "SpatialQuickSortCollider" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.SpatialQuickSortCollider"];
        "SpatialQuickSortCollider" -> "Collider" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "FlatGridCollider" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FlatGridCollider"];
        "FlatGridCollider" -> "Collider" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of Collider.

class yade.wrapper.Collider(inherits GlobalEngine Engine Serializable)

Abstract class for finding spatial collisions between bodies.

Special constructor

Derived colliders (unless they override pyHandleCustomCtorArgs) can be given list of BoundFunctors which is used to initialize the internal boundDispatcher instance.

property avoidSelfInteractionMask

This mask is used to avoid the interactions inside a group of particles. To do so, the particles must have the exact same mask and that mask should have one bit in common with this avoidSelfInteractionMask as for their binary representations.

property boundDispatcher

BoundDispatcher object that is used for creating bounds on collider’s request as necessary.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.FlatGridCollider(inherits Collider GlobalEngine Engine Serializable)

Non-optimized grid collider, storing grid as dense flat array. Each body is assigned to (possibly multiple) cells, which are arranged in regular grid between aabbMin and aabbMax, with cell size step (same in all directions). Bodies outsize (aabbMin, aabbMax) are handled gracefully, assigned to closest cells (this will create spurious potential interactions). verletDist determines how much is each body enlarged to avoid collision detection at every step.

Note

This collider keeps all cells in linear memory array, therefore will be memory-inefficient for sparse simulations.

Warning

objects Body::bound are not used, BoundFunctors are not used either: assigning cells to bodies is hard-coded internally. Currently handles Shapes are: Sphere.

Note

Periodic boundary is not handled (yet).

property aabbMax

Upper corner of grid (approximate, might be rouded up to minStep.

property aabbMin

Lower corner of grid.

property avoidSelfInteractionMask

This mask is used to avoid the interactions inside a group of particles. To do so, the particles must have the exact same mask and that mask should have one bit in common with this avoidSelfInteractionMask as for their binary representations.

property boundDispatcher

BoundDispatcher object that is used for creating bounds on collider’s request as necessary.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property step

Step in the grid (cell size)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property verletDist

Length by which enlarge space occupied by each particle; avoids running collision detection at every step.

class yade.wrapper.GeneralIntegratorInsertionSortCollider(inherits InsertionSortCollider Collider GlobalEngine Engine Serializable)

This class is the adaptive version of the InsertionSortCollider and changes the NewtonIntegrator dependency of the collider algorithms to the Integrator interface which is more general.

property allowBiggerThanPeriod

If true, tests on bodies sizes will be disabled, and the simulation will run normaly even if bodies larger than period are found. It can be useful when the periodic problem include e.g. a floor modelized with wall/box/facet. Be sure you know what you are doing if you touch this flag. The result is undefined if one large body moves out of the (0,0,0) period.

property avoidSelfInteractionMask

This mask is used to avoid the interactions inside a group of particles. To do so, the particles must have the exact same mask and that mask should have one bit in common with this avoidSelfInteractionMask as for their binary representations.

property boundDispatcher

BoundDispatcher object that is used for creating bounds on collider’s request as necessary.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property doSort

Do forced resorting of interactions.

dumpBounds((InsertionSortCollider)arg1) tuple :

Return representation of the internal sort data. The format is ([...],[...],[...]) for 3 axes, where each ... is a list of entries (bounds). The entry is a tuple with the fllowing items:

  • coordinate (float)

  • body id (int), but negated for negative bounds

  • period numer (int), if the collider is in the periodic regime.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property fastestBodyMaxDist

Normalized maximum displacement of the fastest body since last run; if >= 1, we could get out of bboxes and will trigger full run. (auto-updated)

isActivated((InsertionSortCollider)arg1) bool :

Return true if collider needs execution at next iteration.

property keepListsShort

if true remove bounds of non-existent or unbounded bodies from the lists (auto-updated); turned true automatically in MPI mode and if bodies are erased with BodyContainer.enableRedirection`=True. :ydefault:`false

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property minSweepDistFactor

Minimal distance by which enlarge all bounding boxes; superseeds computed value of verletDist when lower that (minSweepDistFactor x verletDist).

property newton

reference to active Newton integrator. (auto-updated)

property numAction

Cummulative number of collision detection.

property numReinit

Cummulative number of bound array re-initialization.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property overlapTolerance

Tolerance on determining overlap. In rare cases different parts of the code can inconsistently lead to different results in terms of overlap, with false negative by spatialOverlapPeri possibly leading to nasty bugs in contact detection (false positive are harmless). This tolerance is to avoid false negative, the value can be understood as relative to 1 (i.e. independent of particle size or any other reference length). The default should be ok.

property periodic

Whether the collider is in periodic mode (read-only; for debugging) (auto-updated)

property smartInsertErase

Use an algorithm optimized for heavy insert/delete (avoid initSort) - experimental.

property sortAxis

Axis for the initial contact detection.

property sortThenCollide

Separate sorting and colliding phase; it is MUCH slower, but all interactions are processed at every step; this effectively makes the collider non-persistent, not remembering last state. (The default behavior relies on the fact that inversions during insertion sort are overlaps of bounding boxes that just started/ceased to exist, and only processes those; this makes the collider much more efficient.)

property strideActive

Whether striding is active (read-only; for debugging). (auto-updated)

property targetInterv

(experimental) Target number of iterations between bound update, used to define a smaller sweep distance for slower grains if >0, else always use 1*verletDist. Useful in simulations with strong velocity contrasts between slow bodies and fast bodies.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property updatingDispFactor

(experimental) Displacement factor used to trigger bound update: the bound is updated only if updatingDispFactor*disp>sweepDist when >0, else all bounds are updated.

property verletDist

Length by which to enlarge particle bounds, to avoid running collider at every step. Stride disabled if zero. Negative value will trigger automatic computation, so that the real value will be verletDist × minimum spherical particle radius; if there are no spherical particles, it will be disabled. The actual length added to one bound can be only a fraction of verletDist when InsertionSortCollider::targetInterv is > 0.

class yade.wrapper.InsertionSortCollider(inherits Collider GlobalEngine Engine Serializable)

Collider with O(n log(n)) complexity, using Aabb for bounds.

At the initial step, Bodies’ bounds (along sortAxis) are first std::sort’ed along this (sortAxis) axis, then collided. The initial sort has \(O(n^2)\) complexity, see Colliders’ performance for some information (There are scripts in examples/collider-perf for measurements).

Insertion sort is used for sorting the bound list that is already pre-sorted from last iteration, where each inversion calls checkOverlap which then handles either overlap (by creating interaction if necessary) or its absence (by deleting interaction if it is only potential).

Bodies without bounding volume (such as clumps) are handled gracefully and never collide. Deleted bodies are handled gracefully as well.

This collider handles periodic boundary conditions. There are some limitations, notably:

  1. No body can have Aabb larger than cell’s half size in that respective dimension. You get exception if it does and gets in interaction. One way to explicitly by-pass this restriction is offered by allowBiggerThanPeriod, which can be turned on to insert a floor in the form of a very large box for instance (see examples/periodicSandPile.py).

  2. No body can travel more than cell’s distance in one step; this would mean that the simulation is numerically exploding, and it is only detected in some cases.

Stride can be used to avoid running collider at every step by enlarging the particle’s bounds, tracking their displacements and only re-run if they might have gone out of that bounds (see Verlet list for brief description and background) . This requires cooperation from NewtonIntegrator as well as BoundDispatcher, which will be found among engines automatically (exception is thrown if they are not found).

If you wish to use strides, set verletDist (length by which bounds will be enlarged in all directions) to some value, e.g. 0.05 × typical particle radius. This parameter expresses the tradeoff between many potential interactions (running collider rarely, but with longer exact interaction resolution phase) and few potential interactions (running collider more frequently, but with less exact resolutions of interactions); it depends mainly on packing density and particle radius distribution.

If targetInterv is >1, not all particles will have their bound enlarged by verletDist; instead, they will have bounds increased by a length in order to trigger a new colliding after targetInterv iteration, assuming they move at almost constant velocity. Ideally in this method, all particles would reach their bounds at the sime iteration. This is of course not the case as soon as velocities fluctuate in time. Bound::sweepLength is tuned on the basis of the displacement recorded between the last two runs of the collider. In this situation, verletDist defines the maximum sweep length.

property allowBiggerThanPeriod

If true, tests on bodies sizes will be disabled, and the simulation will run normaly even if bodies larger than period are found. It can be useful when the periodic problem include e.g. a floor modelized with wall/box/facet. Be sure you know what you are doing if you touch this flag. The result is undefined if one large body moves out of the (0,0,0) period.

property avoidSelfInteractionMask

This mask is used to avoid the interactions inside a group of particles. To do so, the particles must have the exact same mask and that mask should have one bit in common with this avoidSelfInteractionMask as for their binary representations.

property boundDispatcher

BoundDispatcher object that is used for creating bounds on collider’s request as necessary.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property doSort

Do forced resorting of interactions.

dumpBounds((InsertionSortCollider)arg1) tuple :

Return representation of the internal sort data. The format is ([...],[...],[...]) for 3 axes, where each ... is a list of entries (bounds). The entry is a tuple with the fllowing items:

  • coordinate (float)

  • body id (int), but negated for negative bounds

  • period numer (int), if the collider is in the periodic regime.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property fastestBodyMaxDist

Normalized maximum displacement of the fastest body since last run; if >= 1, we could get out of bboxes and will trigger full run. (auto-updated)

isActivated((InsertionSortCollider)arg1) bool :

Return true if collider needs execution at next iteration.

property keepListsShort

if true remove bounds of non-existent or unbounded bodies from the lists (auto-updated); turned true automatically in MPI mode and if bodies are erased with BodyContainer.enableRedirection`=True. :ydefault:`false

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property minSweepDistFactor

Minimal distance by which enlarge all bounding boxes; superseeds computed value of verletDist when lower that (minSweepDistFactor x verletDist).

property newton

reference to active Newton integrator. (auto-updated)

property numAction

Cummulative number of collision detection.

property numReinit

Cummulative number of bound array re-initialization.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property overlapTolerance

Tolerance on determining overlap. In rare cases different parts of the code can inconsistently lead to different results in terms of overlap, with false negative by spatialOverlapPeri possibly leading to nasty bugs in contact detection (false positive are harmless). This tolerance is to avoid false negative, the value can be understood as relative to 1 (i.e. independent of particle size or any other reference length). The default should be ok.

property periodic

Whether the collider is in periodic mode (read-only; for debugging) (auto-updated)

property smartInsertErase

Use an algorithm optimized for heavy insert/delete (avoid initSort) - experimental.

property sortAxis

Axis for the initial contact detection.

property sortThenCollide

Separate sorting and colliding phase; it is MUCH slower, but all interactions are processed at every step; this effectively makes the collider non-persistent, not remembering last state. (The default behavior relies on the fact that inversions during insertion sort are overlaps of bounding boxes that just started/ceased to exist, and only processes those; this makes the collider much more efficient.)

property strideActive

Whether striding is active (read-only; for debugging). (auto-updated)

property targetInterv

(experimental) Target number of iterations between bound update, used to define a smaller sweep distance for slower grains if >0, else always use 1*verletDist. Useful in simulations with strong velocity contrasts between slow bodies and fast bodies.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property updatingDispFactor

(experimental) Displacement factor used to trigger bound update: the bound is updated only if updatingDispFactor*disp>sweepDist when >0, else all bounds are updated.

property verletDist

Length by which to enlarge particle bounds, to avoid running collider at every step. Stride disabled if zero. Negative value will trigger automatic computation, so that the real value will be verletDist × minimum spherical particle radius; if there are no spherical particles, it will be disabled. The actual length added to one bound can be only a fraction of verletDist when InsertionSortCollider::targetInterv is > 0.

class yade.wrapper.SpatialQuickSortCollider(inherits Collider GlobalEngine Engine Serializable)

Collider using quicksort along axes at each step, using Aabb bounds.

Its performance is lower than that of InsertionSortCollider (see Colliders’ performance), but the algorithm is simple enought to make it good for checking other collider’s correctness.

property avoidSelfInteractionMask

This mask is used to avoid the interactions inside a group of particles. To do so, the particles must have the exact same mask and that mask should have one bit in common with this avoidSelfInteractionMask as for their binary representations.

property boundDispatcher

BoundDispatcher object that is used for creating bounds on collider’s request as necessary.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

FieldApplier

digraph FieldApplier {
        rankdir=RL;
        margin="0.2,0.05";
        "FieldApplier" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FieldApplier"];
        "GravityEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GravityEngine"];
        "GravityEngine" -> "FieldApplier" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "AxialGravityEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.AxialGravityEngine"];
        "AxialGravityEngine" -> "FieldApplier" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CentralConstantAccelerationEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CentralConstantAccelerationEngine"];
        "CentralConstantAccelerationEngine" -> "FieldApplier" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "HdapsGravityEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.HdapsGravityEngine"];
        "HdapsGravityEngine" -> "GravityEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of FieldApplier.

class yade.wrapper.FieldApplier(inherits GlobalEngine Engine Serializable)

Base for engines applying force files on particles. Not to be used directly.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.AxialGravityEngine(inherits FieldApplier GlobalEngine Engine Serializable)

Apply acceleration (independent of distance) directed towards an axis.

property acceleration

Acceleration magnitude [kgms⁻²]

property axisDirection

direction of the gravity axis (will be normalized automatically)

property axisPoint

Point through which the axis is passing.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

If mask defined, only bodies with corresponding groupMask will be affected by this engine. If 0, all bodies will be affected.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.CentralConstantAccelerationEngine(inherits FieldApplier GlobalEngine Engine Serializable)

Engine applying constant acceleration to all bodies, towards a central body. Ignoring the distance between them.

property accel

Acceleration magnitude [kgms⁻²]

property centralBody

The body towards which all other bodies are attracted.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

If mask defined, only bodies with corresponding groupMask will be affected by this engine. If 0, all bodies will be affected.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property reciprocal

If true, acceleration will be applied on the central body as well.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GravityEngine(inherits FieldApplier GlobalEngine Engine Serializable)

Engine applying constant acceleration to all bodies. DEPRECATED, use Newton::gravity unless you need energy tracking or selective gravity application using groupMask).

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property gravity

Acceleration [kgms⁻²]

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

If mask defined, only bodies with corresponding groupMask will be affected by this engine. If 0, all bodies will be affected.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property warnOnce

For deprecation warning once.

class yade.wrapper.HdapsGravityEngine(inherits GravityEngine FieldApplier GlobalEngine Engine Serializable)

Read accelerometer in Thinkpad laptops (HDAPS and accordingly set gravity within the simulation. This code draws from hdaps-gl . See scripts/test/hdaps.py for an example.

property accel

reading from the sysfs file

property calibrate

Zero position; if NaN, will be read from the hdapsDir / calibrate.

property calibrated

Whether calibrate was already updated. Do not set to True by hand unless you also give a meaningful value for calibrate.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property gravity

Acceleration [kgms⁻²]

property hdapsDir

Hdaps directory; contains position (with accelerometer readings) and calibration (zero acceleration).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

If mask defined, only bodies with corresponding groupMask will be affected by this engine. If 0, all bodies will be affected.

property msecUpdate

How often to update the reading.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property updateThreshold

Minimum difference of reading from the file before updating gravity, to avoid jitter.

property warnOnce

For deprecation warning once.

property zeroGravity

Gravity if the accelerometer is in flat (zero) position.

Partial engines

digraph PartialEngine {
        rankdir=RL;
        margin="0.2,0.05";
        "PartialEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PartialEngine"];
        "TorqueEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TorqueEngine"];
        "TorqueEngine" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ThermalEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ThermalEngine"];
        "ThermalEngine" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "CombinedKinematicEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.CombinedKinematicEngine"];
        "CombinedKinematicEngine" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PartialSatClayEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PartialSatClayEngine"];
        "PartialSatClayEngine" -> "PartialSatClayEngineT" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "InterpolatingHelixEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.InterpolatingHelixEngine"];
        "InterpolatingHelixEngine" -> "HelixEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PartialSatClayEngineT" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PartialSatClayEngineT"];
        "PartialSatClayEngineT" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "LinearDragEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.LinearDragEngine"];
        "LinearDragEngine" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "HelixEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.HelixEngine"];
        "HelixEngine" -> "RotationEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "TwoPhaseFlowEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TwoPhaseFlowEngine"];
        "TwoPhaseFlowEngine" -> "TwoPhaseFlowEngineT" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "FlowEngine_PeriodicInfo" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FlowEngine_PeriodicInfo"];
        "FlowEngine_PeriodicInfo" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "RotationEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.RotationEngine"];
        "RotationEngine" -> "KinematicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "HarmonicForceEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.HarmonicForceEngine"];
        "HarmonicForceEngine" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "HarmonicMotionEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.HarmonicMotionEngine"];
        "HarmonicMotionEngine" -> "KinematicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "FlowEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FlowEngine"];
        "FlowEngine" -> "FlowEngineT" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ForceEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ForceEngine"];
        "ForceEngine" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "LawTester" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.LawTester"];
        "LawTester" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "TwoPhaseFlowEngineT" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TwoPhaseFlowEngineT"];
        "TwoPhaseFlowEngineT" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "BicyclePedalEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.BicyclePedalEngine"];
        "BicyclePedalEngine" -> "KinematicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "KinematicEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.KinematicEngine"];
        "KinematicEngine" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "ServoPIDController" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.ServoPIDController"];
        "ServoPIDController" -> "TranslationEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "TranslationEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TranslationEngine"];
        "TranslationEngine" -> "KinematicEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "InterpolatingDirectedForceEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.InterpolatingDirectedForceEngine"];
        "InterpolatingDirectedForceEngine" -> "ForceEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "UnsaturatedEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.UnsaturatedEngine"];
        "UnsaturatedEngine" -> "TwoPhaseFlowEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "RadialForceEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.RadialForceEngine"];
        "RadialForceEngine" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "StepDisplacer" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.StepDisplacer"];
        "StepDisplacer" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "HarmonicRotationEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.HarmonicRotationEngine"];
        "HarmonicRotationEngine" -> "RotationEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "FlowEngineT" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FlowEngineT"];
        "FlowEngineT" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PeriodicFlowEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PeriodicFlowEngine"];
        "PeriodicFlowEngine" -> "FlowEngine_PeriodicInfo" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "HydroForceEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.HydroForceEngine"];
        "HydroForceEngine" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "TimeAverager" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TimeAverager"];
        "TimeAverager" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "DragEngine" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.DragEngine"];
        "DragEngine" -> "PartialEngine" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of PartialEngine.

class yade.wrapper.PartialEngine(inherits Engine Serializable)

Engine affecting only particular bodies in the simulation, namely those defined in ids attribute. See also GlobalEngine.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.BicyclePedalEngine(inherits KinematicEngine PartialEngine Engine Serializable)

Engine applying the linear motion of bicycle pedal e.g. moving points around the axis without rotation

property angularVelocity

Angular velocity. [rad/s]

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property fi

Initial phase [radians]

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property radius

Rotation radius. [m]

property rotationAxis

Axis of rotation (direction); will be normalized automatically.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.CombinedKinematicEngine(inherits PartialEngine Engine Serializable)

Engine for applying combined displacements on pre-defined bodies. Constructed using + operator on regular KinematicEngines. The ids operated on are those of the first engine in the combination (assigned automatically).

property comb

Kinematic engines that will be combined by this one, run in the order given.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.DragEngine(inherits PartialEngine Engine Serializable)

Apply drag force on some particles at each step, decelerating them proportionally to their linear velocities. The applied force reads

\[F_{d}=-\frac{\vec{v}}{|\vec{v}|}\frac{1}{2}\rho|\vec{v}|^2 C_d A\]

where \(\rho\) is the medium density (density), \(v\) is particle’s velocity, \(A\) is particle projected area (disc), \(C_d\) is the drag coefficient (0.47 for Sphere),

Note

Drag force is only applied to spherical particles, listed in ids.

property Cd

Drag coefficient <http://en.wikipedia.org/wiki/Drag_coefficient>`_.

property Rho

Density of the medium (fluid or air), by default - the density of the air.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.FlowEngine(inherits FlowEngineT PartialEngine Engine Serializable)

An engine to solve flow problem in saturated granular media. Model description can be found in [Chareyre2012a] and [Catalano2014a]. See the example script FluidCouplingPFV/oedometer.py. More documentation to come.

OSI((FlowEngineT)arg1) float :

Return the number of interactions only between spheres.

property alphaBound

if 0, use an alphaBoundary condition where CGAL finds minimum alpha necessary for a single solid object. Any positive value will be used for the alpha. All negative values deactivate the functionality.

property alphaBoundValue

value of alpha constant pressure condition

avFlVelOnSph((FlowEngineT)arg1, (int)idSph) object :

compute a sphere-centered average fluid velocity

property averageCavityPressure

true means the pressure in the cavity will be averaged each iteration.

averagePressure((FlowEngineT)arg1) float :

Measure averaged pore pressure in the entire volume, the cells adjacent to the boundaries are ignored if includeBoundaries=False

averageSlicePressure((FlowEngineT)arg1, (float)posY) float :

Measure slice-averaged pore pressure at height posY

averageVelocity((FlowEngineT)arg1) Vector3 :

measure the mean velocity in the period

blockCell((FlowEngineT)arg1, (int)id, (bool)blockPressure) None :

block cell ‘id’. The cell will be excluded from the fluid flow problem and the conductivity of all incident facets will be null. If blockPressure=False, deformation is reflected in the pressure, else it is constantly 0.

property blockHook

Python command to be run when remeshing. Anticipated usage: define blocked cells (see also FlowEngine.blockCell), or apply exotic types of boundary conditions which need to visit the newly built mesh

property bndCondIsPressure

defines the type of boundary condition for each side. True if pressure is imposed, False for no-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondIsTemperature

defines the type of boundary condition for each side of triangulation (used with ThermalEngine only). True if temperature is imposed, False for no heat-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondValue

Imposed value of a boundary condition. Only applies if the boundary condition is imposed pressure, else the imposed flux is always zero presently (may be generalized to non-zero imposed fluxes in the future).

bodyNormalLubStress((FlowEngineT)arg1, (int)idSph) Matrix3 :

Return the normal lubrication stress on sphere idSph.

bodyShearLubStress((FlowEngineT)arg1, (int)idSph) Matrix3 :

Return the shear lubrication stress on sphere idSph.

property boundaryPressure

values defining pressure along x-axis for the top surface. See also FlowEngine::boundaryXPos

property boundaryUseMaxMin

If true (default value) bounding sphere is added as function of max/min sphere coord, if false as function of yade wall position

property boundaryVelocity

velocity on top boundary, only change it using FlowEngine::setBoundaryVel

property boundaryXPos

values of the x-coordinate for which pressure is defined. See also FlowEngine::boundaryPressure

property breakControlledRemesh

If true, remesh will occur everytime a break occurs in JCFpmPhys. Designed to increase accuracy and efficiency in hydraulic fracture simulations.

property cavityFactor

Permeability/viscosity for cavity cell neighbors (arbitrarily high to model triangulated fluid filled cavity).

property cavityFluidDensity

>0 means cavity compressibility model considers density changes instead of volume changes.

property cavityFlux

For adding flux to pressuremanaged cavity model (FlowEngine::controlCavityPressure). Negavite influx, postive outflux.

cholmodStats((FlowEngineT)arg1) None :

get statistics of cholmod solver activity

property clampKValues

If true, clamp local permeabilities in [minKdivKmean,maxKdivKmean]*globalK. This clamping can avoid singular values in the permeability matrix and may reduce numerical errors in the solve phase. It will also hide junk values if they exist, or bias all values in very heterogeneous problems. So, use this with care.

clearImposedFlux((FlowEngineT)arg1) None :

Clear the list of points with flux imposed.

clearImposedPressure((FlowEngineT)arg1) None :

Clear the list of points with pressure imposed.

compTessVolumes((FlowEngineT)arg1) None :

Like TesselationWrapper::computeVolumes()

property controlCavityPressure

use full cavity flux and fluidbulkmodulus to control cavity as dynamic pressure (dirichlet) boundary condition.

property controlCavityVolumeChange

cavity imposes a volume change on neighbor cells (shouldnt be used with controlCavityPressure)

property convertClumps

If true the clumps will be temptatively converted into equivalent spheres in the triangulation, and clump members are skipped. Else clumps are ignored and spherical clump members are triangulated as independent bodies.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property debug

Activate debug messages

property decoupleForces

If true, viscous and pressure forces are not imposed on particles. Useful for speeding up simulations in ultra-stiff cohesive materials.

property defTolerance

Cumulated deformation threshold for which retriangulation of pore space is performed. If negative, the triangulation update will occure with a fixed frequency on the basis of FlowEngine::meshUpdateInterval

property desiredPorosity

Correct the cell volumes to reflect this desired porosity (not active by default (0)).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property doInterpolate

Force the interpolation of cell’s info while remeshing. By default, interpolation would be done only for compressible fluids. It can be forced with this flag.

property dt

timestep [s]

edgeSize((FlowEngineT)arg1) float :

Return the number of interactions.

emulateAction((FlowEngineT)arg1) None :

get scene and run action (may be used to manipulate an engine outside the timestepping loop).

property eps

roughness defined as a fraction of particles size, giving the minimum distance between particles in the lubrication model.

property epsVolMax

Maximal absolute volumetric strain computed at each iteration. (auto-updated)

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

exportMatrix((FlowEngineT)arg1[, (str)filename='matrix']) None :

Export system matrix to a file with all entries (even zeros will displayed).

exportTriplets((FlowEngineT)arg1[, (str)filename='triplets']) None :

Export system matrix to a file with only non-zero entries.

property first

Controls the initialization/update phases

property fixTriUpdatePermInt

If positive, triangulation is fixed and DFNFlow trickPermeability is run according to the interval. Activating this automatically sets FlowEngine::meshUpdateInt and FlowEngine::defTolerance to -1 (never retriangulate).

property fixedAlpha

If true, a constant-sized alpha vertex will be placed exactly above each facet. If false, logic is used to improve cell sizes in concave regions.

property flatThreshold

If >=0, pore volumes below flatThreshold value are blocked from flow calc. Useful for compressible flow involving odd triangulations with some very flat pores.

property fluidBulkModulus

Bulk modulus of fluid (inverse of compressibility) K=-dP*V/dV [Pa]. Flow is compressible if fluidBulkModulus > 0, else incompressible.

property fluidCp

Heat capacity of fluid (for thermalEngine).

fluidForce((FlowEngineT)arg1, (int)idSph) Vector3 :

Return the fluid force on sphere idSph.

property fluidRho

Density of fluid (for thermalEngine).

property forceMetis

If true, METIS is used for matrix preconditioning, else Cholmod is free to choose the best method (which may be METIS to, depending on the matrix). See nmethods in Cholmod documentation

getBoundaryFluidArea((FlowEngineT)arg1, (int)boundary) float :

Get total fluid area associated with boundary defined by its body id.

getBoundaryFlux((FlowEngineT)arg1, (int)boundary) float :

Get total flux through boundary defined by its body id.

Note

The flux may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such flux evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

getBoundaryVel((FlowEngineT)arg1, (int)boundary) object :

Get total avg cell velocity associated with boundary defined by its body id.

getBoundaryVolume((FlowEngineT)arg1, (int)arg2, (float)boundary) float :

Get total volume flowing through boundary defined by its body id in current timestep dt.

Note

The volume may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such volume evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

property getCHOLMODPerfTimings

Print CHOLMOD build, analyze, and factorize timings

getCavityDensity((FlowEngineT)arg1) float :

Return the density of cavity fluid.

getCavityFlux((FlowEngineT)arg1) float :

Return the flux through the edge of the cavity.

getCell((FlowEngineT)arg1, (float)X, (float)Y, (float)Z) int :

get id of the cell containing (X,Y,Z).

getCellBarycenter((FlowEngineT)arg1, (int)id) Vector3 :

get barycenter of cell ‘id’.

getCellCenter((FlowEngineT)arg1, (int)id) Vector3 :

get voronoi center of cell ‘id’.

getCellFlux((FlowEngineT)arg1, (int)cond) float :

Get influx in cell associated to an imposed P (indexed using ‘cond’).

getCellFluxFromId((FlowEngineT)arg1, (int)id) float :

Get influx in cell.

getCellInvVoidVolume((FlowEngineT)arg1, (int)id) float :

get the inverse of the cell volume for cell ‘id’ after pore volumes have been initialized and FlowEngine:iniVoidVolumes = True, or compressibility scheme active with FlowEngine::fluidBulkModulus.

getCellPImposed((FlowEngineT)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed pressure.

getCellPressure((FlowEngineT)arg1, (int)id) float :

get pressure by cell ‘id’. Note: getting pressure at position (x,y,z) might be more usefull, see :yref`FlowEngine::getPorePressure`:

getCellTImposed((FlowEngineT)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed temperature.

getCellTemperature((FlowEngineT)arg1, (int)id) float :

get pressure in cell ‘id’.

getCellVelocity((FlowEngineT)arg1, (Vector3)pos) object :

Get relative cell velocity at position pos[0] pos [1] pos[2].

getCellVolume((FlowEngineT)arg1, (Vector3)pos) float :

Get volume of cell at position pos[0] pos [1] pos[2].

getConductivity((FlowEngineT)arg1, (int)cellId, (int)throat) float :

get conductivity from cell and throat, with throat between 0 and 3 (same ordering as incident cells)

getConstrictions((FlowEngineT)arg1[, (bool)all=True]) list :

Get the list of constriction radii (inscribed circle) for all finite facets (if all==True) or all facets not incident to a virtual bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres.

getConstrictionsFull((FlowEngineT)arg1[, (bool)all=True]) list :

Get the list of constrictions (inscribed circle) for all finite facets (if all==True), or all facets not incident to a fictious bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres. The constrictions are returned in the format {{cell1,cell2}{rad,nx,ny,nz}}

getDiffusionCoeff((FlowEngineT)arg1, (int)cellId, (int)throat) float :

get the ratio of throat cross-sectional area and distance between two cells

getEquivalentCompressibility((FlowEngineT)arg1) float :

Return the equivalent compressibility used for modeling air water mixture in cavity.

getIncidentCells((FlowEngineT)arg1, (int)vertexId) list :

get ids of all cells of which vertexId is a vertex. Typical usage is for getting cells indident to a boundary.

getNeighbors((FlowEngineT)arg1, (int)arg2) list :

get 4 neigboring cells

getPorePressure((FlowEngineT)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getPoreTemperature((FlowEngineT)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getVertices((FlowEngineT)arg1, (int)id) list :

get the vertices of a cell

property idOffset

If the bounding walls of the fluid mesh are not walls of the scene (i.e. are not elements of O.bodies), the offset should be set equal to the size of O.bodies. If the bounding walls are bodies of the scene but are not numbered as 0-5 then offset should be the number of bodies comming before the walls. Set offset<0 to get it set equal to O.bodies.size(), it will also update FlowEngine::wallIds.

property ids

Ids list of bodies affected by this PartialEngine.

property ignoredBody

DEPRECATED, USE MASK - Id of a sphere to exclude from the triangulation.)

imposeCavity((FlowEngineT)arg1, (Vector3)pos) int :

Cell with location ‘pos’ participates in a cavity (high conductivity and no volume factoring). The index of the condition is returned (for multiple imposed pressures at different points).

imposeFlux((FlowEngineT)arg1, (Vector3)pos, (float)p) None :

Impose a flux in cell located at ‘pos’ (i.e. add a source term in the flow problem). Outflux positive, influx negative.

imposePressure((FlowEngineT)arg1, (Vector3)pos, (float)p) int :

Impose pressure in cell of location ‘pos’. The index of the condition is returned (for multiple imposed pressures at different points).

imposePressureFromId((FlowEngineT)arg1, (int)id, (float)p) int :

Impose pressure in cell of index ‘id’ (after remeshing the same condition will apply for the same location, regardless of what the new cell index is at this location). The index of the condition itself is returned (for multiple imposed pressures at different points).

property iniVoidVolumes

activate the computation of the inverse of the initial void volumes in each cell when pore volumes are initialized.

initializeVolumes((FlowEngineT)arg1) None :

initialize pore volumes.

property isActivated

Activates Flow Engine

isCellNeighbor((FlowEngineT)arg1, (int)cell1_ID, (int)cell2_ID) bool :

check if cell1 and cell2 are neigbors.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

If mask defined, only bodies with corresponding groupMask will be affected by this engine. If 0, all bodies will be affected.

property maxKdivKmean

define the max K value (see FlowEngine::clampKValues)

property meanKStat

report the local permeabilities’ correction

property meshUpdateInterval

Maximum number of timesteps between re-triangulation events (a negative value will never re-triangulate). See also FlowEngine::defTolerance.

metisUsed((FlowEngineT)arg1) bool :

check wether metis lib is effectively used

property minKdivKmean

define the min K value (see FlowEngine::clampKValues)

property minimumPorosity

value used to limit the allowable minimum porosity for pore volume calculations. Particularly useful if very small volumes are impacting stability

property multithread

Build triangulation and factorize in the background (multi-thread mode)

nCells((FlowEngineT)arg1) int :

get the total number of finite cells in the triangulation.

normalLubForce((FlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal lubrication force on sphere idSph.

property normalLubrication

compute normal lubrication force as developped by Brule

normalVect((FlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal vector between particles.

normalVelocity((FlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal velocity of the interaction.

property numFactorizeThreads

number of openblas threads in the factorization phase

property numSolveThreads

number of openblas threads in the solve phase.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

onlySpheresInteractions((FlowEngineT)arg1, (int)interaction) int :

Return the id of the interaction only between spheres.

property pZero

The value used for initializing pore pressure. It is useless for incompressible fluid, but important for compressible model.

property permeabilityFactor

Permability multiplier (\(m\)): \(m=1\) (default) attempts to predicty the actual hydraulic conductivity using a Poiseuille equation; \(m>0\) multiplies the default values by \(m\); \(m<0\) defines the conductivity independently of particle size and viscosity as if the material was a homogeneous continuum of conductivity \(-m\)

property permeabilityMap

Enable/disable stocking of average permeability scalar in cell infos.

property phiZero

if >0, considers water aircontent impact on fluid compressibility.

property porosity

Porosity computed at each retriangulation (auto-updated)

property pressureForce

compute the pressure field and associated fluid forces. WARNING: turning off means fluid flow is not computed at all.

pressureProfile((FlowEngineT)arg1, (float)wallUpY, (float)wallDownY) None :

Measure pore pressure in 6 equally-spaced points along the height of the sample

printVertices((FlowEngineT)arg1) None :

Export vertex positions and types

property pumpTorque

Compute pump torque applied on particles

property relax

Gauss-Seidel relaxation

resetLinearSystem((FlowEngineT)arg1) None :

trigger rebuild of the linear system while keeping the same triangulation

saveVtk((FlowEngineT)arg1[, (str)folder='./VTK'[, (bool)withBoundaries=False]]) None :

Save pressure field in vtk format. Specify a folder name for output. The cells adjacent to the bounding spheres are generated conditionally based on FlowEngine::withBoundaries (not compatible with periodic boundaries)

setBoundaryNormal((FlowEngineT)arg1, (int)arg2, (Vector3)arg3) None :

define the unit outward-pointing normal of a boundary (0<=index<=5).

setCellPImposed((FlowEngineT)arg1, (int)id, (bool)pImposed) None :

make cell ‘id’ assignable with imposed pressure.

setCellPressure((FlowEngineT)arg1, (int)id, (float)pressure) None :

set pressure in cell ‘id’.

setCellTImposed((FlowEngineT)arg1, (int)id, (bool)tImposed) None :

make cell ‘id’ assignable with imposed temperature.

setCellTemperature((FlowEngineT)arg1, (int)id, (float)temperature) None :

set temperature in cell ‘id’.

setImposedPressure((FlowEngineT)arg1, (int)cond, (float)p) None :

Set pressure value at the point indexed ‘cond’.

shearLubForce((FlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear lubrication force on sphere idSph.

shearLubTorque((FlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear lubrication torque on sphere idSph.

property shearLubrication

compute shear lubrication force as developped by Brule (FIXME: ref.)

shearVelocity((FlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear velocity of the interaction.

property sineAverage

Pressure value (average) when sinusoidal pressure is applied

property sineMagnitude

Pressure value (amplitude) when sinusoidal pressure is applied (p )

property slipBoundary

Controls friction condition on lateral walls

property stiffness

equivalent contact stiffness used in the lubrication model

surfaceDistanceParticle((FlowEngineT)arg1, (int)interaction) float :

Return the distance between particles.

surfaceSolidThroatInPore((FlowEngineT)arg1, (int)cellId, (int)throatIndex) float :

returns solid area in the throat (index 0-3), keeping only that part of the throat in cell.

property tZero

The value used for initializing pore temperatures in thermalEngine.

property tempDependentViscosity

boolean to vary viscosity (ultimately cell permeability) with cell temperature. Linear model for viscosity b/w 20-70 degC. If true, kFactor must also be set negative, and becomes the darcy permeability.

property thermalBndCondValue

Imposed temperature boundary condition value for the cells in the triangulation (used with ThermalEngine only).

property thermalEngine

activate thermalEngine within FlowEngine.

property thermalPorosity

>0 means the void volume space will be factored by thermalPorosity for pore internal energy considerations.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property tolerance

Gauss-Seidel tolerance

property twistTorque

Compute twist torque applied on particles

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

updateBCs((FlowEngineT)arg1) None :

Update the boundary condition to reflect changes of boundary pressure (needed typically after changing FlowEngine::bndCondValue). It is not sufficient to reflect changes of the type of boundary condition (FlowEngine::bndCondIsPressure), in such case re-triangulation or at least updating the linear system is needed (see FlowEngine::updateTriangulation and FlowEngine::updateLinearSystem). Conversely, the update is not necessary for changing the value of point-wise imposed pressure (FlowEngine::imposePressure)

property updateTriangulation

If true the medium is retriangulated. Can be switched on to force retriangulation after some events (else it will be true periodicaly based on FlowEngine::defTolerance and FlowEngine::meshUpdateInterval. Of course, it costs CPU time. Note that the new triangulation will start to be effectively used only after one iteration (i.e. O.run(2) gives a result with the new one, O.run(1) does not).

updateVolumes((FlowEngineT)arg1) None :

update rates of volume change

property useSolver

Solver to use. 0:Gauss-Seidel, 3: Cholesky factorization (via Eigen3 interface), 4:multicore CPU or GPU accelerated CHOLMOD (without Eigen3), 1-2: undefined.

property viscosity

viscosity of the fluid

property viscousNormalBodyStress

compute normal viscous stress applied on each body

property viscousShear

compute viscous shear terms as developped by Donia Marzougui (FIXME: ref.)

property viscousShearBodyStress

compute shear viscous stress applied on each body

volume((FlowEngineT)arg1[, (int)id=0]) float :

Returns the volume of Voronoi’s cell of a sphere.

property volumeCorrection

Volume correction factor (not user controlled. auto computed if FlowEngine::desiredPorosity != 0)

property volumeFactor

Factor used for simulating low porosity (for thermal considerations only) in high porosity DEM packings.

property wallIds

body ids of the boundaries (default values are ok only if aabbWalls are appended before spheres, i.e. numbered 0,…,5)

property wallThickness

Walls thickness

property waveAction

Allow sinusoidal pressure condition to simulate ocean waves

property xmax

See FlowEngine::xmin.

property xmin

Index of the boundary \(x_{min}\). This index is not equal the the id of the corresponding body in general, it may be used to access the corresponding attributes (e.g. flow.bndCondValue[flow.xmin], flow.wallId[flow.xmin],…).

property ymax

See FlowEngine::xmin.

property ymin

See FlowEngine::xmin.

property zmax

See FlowEngine::xmin.

property zmin

See FlowEngine::xmin.

class yade.wrapper.FlowEngineT(inherits PartialEngine Engine Serializable)

A generic engine from wich more specialized engines can inherit. It is defined for the sole purpose of inserting the right data classes CellInfo and VertexInfo in the triangulation, and it should not be used directly. Instead, look for specialized engines, e.g. FlowEngine, PeriodicFlowEngine, or DFNFlowEngine.

OSI((FlowEngineT)arg1) float :

Return the number of interactions only between spheres.

property alphaBound

if 0, use an alphaBoundary condition where CGAL finds minimum alpha necessary for a single solid object. Any positive value will be used for the alpha. All negative values deactivate the functionality.

property alphaBoundValue

value of alpha constant pressure condition

avFlVelOnSph((FlowEngineT)arg1, (int)idSph) object :

compute a sphere-centered average fluid velocity

property averageCavityPressure

true means the pressure in the cavity will be averaged each iteration.

averagePressure((FlowEngineT)arg1) float :

Measure averaged pore pressure in the entire volume, the cells adjacent to the boundaries are ignored if includeBoundaries=False

averageSlicePressure((FlowEngineT)arg1, (float)posY) float :

Measure slice-averaged pore pressure at height posY

averageVelocity((FlowEngineT)arg1) Vector3 :

measure the mean velocity in the period

blockCell((FlowEngineT)arg1, (int)id, (bool)blockPressure) None :

block cell ‘id’. The cell will be excluded from the fluid flow problem and the conductivity of all incident facets will be null. If blockPressure=False, deformation is reflected in the pressure, else it is constantly 0.

property blockHook

Python command to be run when remeshing. Anticipated usage: define blocked cells (see also FlowEngine.blockCell), or apply exotic types of boundary conditions which need to visit the newly built mesh

property bndCondIsPressure

defines the type of boundary condition for each side. True if pressure is imposed, False for no-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondIsTemperature

defines the type of boundary condition for each side of triangulation (used with ThermalEngine only). True if temperature is imposed, False for no heat-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondValue

Imposed value of a boundary condition. Only applies if the boundary condition is imposed pressure, else the imposed flux is always zero presently (may be generalized to non-zero imposed fluxes in the future).

bodyNormalLubStress((FlowEngineT)arg1, (int)idSph) Matrix3 :

Return the normal lubrication stress on sphere idSph.

bodyShearLubStress((FlowEngineT)arg1, (int)idSph) Matrix3 :

Return the shear lubrication stress on sphere idSph.

property boundaryPressure

values defining pressure along x-axis for the top surface. See also FlowEngine::boundaryXPos

property boundaryUseMaxMin

If true (default value) bounding sphere is added as function of max/min sphere coord, if false as function of yade wall position

property boundaryVelocity

velocity on top boundary, only change it using FlowEngine::setBoundaryVel

property boundaryXPos

values of the x-coordinate for which pressure is defined. See also FlowEngine::boundaryPressure

property breakControlledRemesh

If true, remesh will occur everytime a break occurs in JCFpmPhys. Designed to increase accuracy and efficiency in hydraulic fracture simulations.

property cavityFactor

Permeability/viscosity for cavity cell neighbors (arbitrarily high to model triangulated fluid filled cavity).

property cavityFluidDensity

>0 means cavity compressibility model considers density changes instead of volume changes.

property cavityFlux

For adding flux to pressuremanaged cavity model (FlowEngine::controlCavityPressure). Negavite influx, postive outflux.

cholmodStats((FlowEngineT)arg1) None :

get statistics of cholmod solver activity

property clampKValues

If true, clamp local permeabilities in [minKdivKmean,maxKdivKmean]*globalK. This clamping can avoid singular values in the permeability matrix and may reduce numerical errors in the solve phase. It will also hide junk values if they exist, or bias all values in very heterogeneous problems. So, use this with care.

clearImposedFlux((FlowEngineT)arg1) None :

Clear the list of points with flux imposed.

clearImposedPressure((FlowEngineT)arg1) None :

Clear the list of points with pressure imposed.

compTessVolumes((FlowEngineT)arg1) None :

Like TesselationWrapper::computeVolumes()

property controlCavityPressure

use full cavity flux and fluidbulkmodulus to control cavity as dynamic pressure (dirichlet) boundary condition.

property controlCavityVolumeChange

cavity imposes a volume change on neighbor cells (shouldnt be used with controlCavityPressure)

property convertClumps

If true the clumps will be temptatively converted into equivalent spheres in the triangulation, and clump members are skipped. Else clumps are ignored and spherical clump members are triangulated as independent bodies.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property debug

Activate debug messages

property decoupleForces

If true, viscous and pressure forces are not imposed on particles. Useful for speeding up simulations in ultra-stiff cohesive materials.

property defTolerance

Cumulated deformation threshold for which retriangulation of pore space is performed. If negative, the triangulation update will occure with a fixed frequency on the basis of FlowEngine::meshUpdateInterval

property desiredPorosity

Correct the cell volumes to reflect this desired porosity (not active by default (0)).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property doInterpolate

Force the interpolation of cell’s info while remeshing. By default, interpolation would be done only for compressible fluids. It can be forced with this flag.

property dt

timestep [s]

edgeSize((FlowEngineT)arg1) float :

Return the number of interactions.

emulateAction((FlowEngineT)arg1) None :

get scene and run action (may be used to manipulate an engine outside the timestepping loop).

property eps

roughness defined as a fraction of particles size, giving the minimum distance between particles in the lubrication model.

property epsVolMax

Maximal absolute volumetric strain computed at each iteration. (auto-updated)

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

exportMatrix((FlowEngineT)arg1[, (str)filename='matrix']) None :

Export system matrix to a file with all entries (even zeros will displayed).

exportTriplets((FlowEngineT)arg1[, (str)filename='triplets']) None :

Export system matrix to a file with only non-zero entries.

property first

Controls the initialization/update phases

property fixTriUpdatePermInt

If positive, triangulation is fixed and DFNFlow trickPermeability is run according to the interval. Activating this automatically sets FlowEngine::meshUpdateInt and FlowEngine::defTolerance to -1 (never retriangulate).

property fixedAlpha

If true, a constant-sized alpha vertex will be placed exactly above each facet. If false, logic is used to improve cell sizes in concave regions.

property flatThreshold

If >=0, pore volumes below flatThreshold value are blocked from flow calc. Useful for compressible flow involving odd triangulations with some very flat pores.

property fluidBulkModulus

Bulk modulus of fluid (inverse of compressibility) K=-dP*V/dV [Pa]. Flow is compressible if fluidBulkModulus > 0, else incompressible.

property fluidCp

Heat capacity of fluid (for thermalEngine).

fluidForce((FlowEngineT)arg1, (int)idSph) Vector3 :

Return the fluid force on sphere idSph.

property fluidRho

Density of fluid (for thermalEngine).

property forceMetis

If true, METIS is used for matrix preconditioning, else Cholmod is free to choose the best method (which may be METIS to, depending on the matrix). See nmethods in Cholmod documentation

getBoundaryFluidArea((FlowEngineT)arg1, (int)boundary) float :

Get total fluid area associated with boundary defined by its body id.

getBoundaryFlux((FlowEngineT)arg1, (int)boundary) float :

Get total flux through boundary defined by its body id.

Note

The flux may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such flux evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

getBoundaryVel((FlowEngineT)arg1, (int)boundary) object :

Get total avg cell velocity associated with boundary defined by its body id.

getBoundaryVolume((FlowEngineT)arg1, (int)arg2, (float)boundary) float :

Get total volume flowing through boundary defined by its body id in current timestep dt.

Note

The volume may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such volume evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

property getCHOLMODPerfTimings

Print CHOLMOD build, analyze, and factorize timings

getCavityDensity((FlowEngineT)arg1) float :

Return the density of cavity fluid.

getCavityFlux((FlowEngineT)arg1) float :

Return the flux through the edge of the cavity.

getCell((FlowEngineT)arg1, (float)X, (float)Y, (float)Z) int :

get id of the cell containing (X,Y,Z).

getCellBarycenter((FlowEngineT)arg1, (int)id) Vector3 :

get barycenter of cell ‘id’.

getCellCenter((FlowEngineT)arg1, (int)id) Vector3 :

get voronoi center of cell ‘id’.

getCellFlux((FlowEngineT)arg1, (int)cond) float :

Get influx in cell associated to an imposed P (indexed using ‘cond’).

getCellFluxFromId((FlowEngineT)arg1, (int)id) float :

Get influx in cell.

getCellInvVoidVolume((FlowEngineT)arg1, (int)id) float :

get the inverse of the cell volume for cell ‘id’ after pore volumes have been initialized and FlowEngine:iniVoidVolumes = True, or compressibility scheme active with FlowEngine::fluidBulkModulus.

getCellPImposed((FlowEngineT)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed pressure.

getCellPressure((FlowEngineT)arg1, (int)id) float :

get pressure by cell ‘id’. Note: getting pressure at position (x,y,z) might be more usefull, see :yref`FlowEngine::getPorePressure`:

getCellTImposed((FlowEngineT)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed temperature.

getCellTemperature((FlowEngineT)arg1, (int)id) float :

get pressure in cell ‘id’.

getCellVelocity((FlowEngineT)arg1, (Vector3)pos) object :

Get relative cell velocity at position pos[0] pos [1] pos[2].

getCellVolume((FlowEngineT)arg1, (Vector3)pos) float :

Get volume of cell at position pos[0] pos [1] pos[2].

getConductivity((FlowEngineT)arg1, (int)cellId, (int)throat) float :

get conductivity from cell and throat, with throat between 0 and 3 (same ordering as incident cells)

getConstrictions((FlowEngineT)arg1[, (bool)all=True]) list :

Get the list of constriction radii (inscribed circle) for all finite facets (if all==True) or all facets not incident to a virtual bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres.

getConstrictionsFull((FlowEngineT)arg1[, (bool)all=True]) list :

Get the list of constrictions (inscribed circle) for all finite facets (if all==True), or all facets not incident to a fictious bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres. The constrictions are returned in the format {{cell1,cell2}{rad,nx,ny,nz}}

getDiffusionCoeff((FlowEngineT)arg1, (int)cellId, (int)throat) float :

get the ratio of throat cross-sectional area and distance between two cells

getEquivalentCompressibility((FlowEngineT)arg1) float :

Return the equivalent compressibility used for modeling air water mixture in cavity.

getIncidentCells((FlowEngineT)arg1, (int)vertexId) list :

get ids of all cells of which vertexId is a vertex. Typical usage is for getting cells indident to a boundary.

getNeighbors((FlowEngineT)arg1, (int)arg2) list :

get 4 neigboring cells

getPorePressure((FlowEngineT)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getPoreTemperature((FlowEngineT)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getVertices((FlowEngineT)arg1, (int)id) list :

get the vertices of a cell

property idOffset

If the bounding walls of the fluid mesh are not walls of the scene (i.e. are not elements of O.bodies), the offset should be set equal to the size of O.bodies. If the bounding walls are bodies of the scene but are not numbered as 0-5 then offset should be the number of bodies comming before the walls. Set offset<0 to get it set equal to O.bodies.size(), it will also update FlowEngine::wallIds.

property ids

Ids list of bodies affected by this PartialEngine.

property ignoredBody

DEPRECATED, USE MASK - Id of a sphere to exclude from the triangulation.)

imposeCavity((FlowEngineT)arg1, (Vector3)pos) int :

Cell with location ‘pos’ participates in a cavity (high conductivity and no volume factoring). The index of the condition is returned (for multiple imposed pressures at different points).

imposeFlux((FlowEngineT)arg1, (Vector3)pos, (float)p) None :

Impose a flux in cell located at ‘pos’ (i.e. add a source term in the flow problem). Outflux positive, influx negative.

imposePressure((FlowEngineT)arg1, (Vector3)pos, (float)p) int :

Impose pressure in cell of location ‘pos’. The index of the condition is returned (for multiple imposed pressures at different points).

imposePressureFromId((FlowEngineT)arg1, (int)id, (float)p) int :

Impose pressure in cell of index ‘id’ (after remeshing the same condition will apply for the same location, regardless of what the new cell index is at this location). The index of the condition itself is returned (for multiple imposed pressures at different points).

property iniVoidVolumes

activate the computation of the inverse of the initial void volumes in each cell when pore volumes are initialized.

initializeVolumes((FlowEngineT)arg1) None :

initialize pore volumes.

property isActivated

Activates Flow Engine

isCellNeighbor((FlowEngineT)arg1, (int)cell1_ID, (int)cell2_ID) bool :

check if cell1 and cell2 are neigbors.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

If mask defined, only bodies with corresponding groupMask will be affected by this engine. If 0, all bodies will be affected.

property maxKdivKmean

define the max K value (see FlowEngine::clampKValues)

property meanKStat

report the local permeabilities’ correction

property meshUpdateInterval

Maximum number of timesteps between re-triangulation events (a negative value will never re-triangulate). See also FlowEngine::defTolerance.

metisUsed((FlowEngineT)arg1) bool :

check wether metis lib is effectively used

property minKdivKmean

define the min K value (see FlowEngine::clampKValues)

property minimumPorosity

value used to limit the allowable minimum porosity for pore volume calculations. Particularly useful if very small volumes are impacting stability

property multithread

Build triangulation and factorize in the background (multi-thread mode)

nCells((FlowEngineT)arg1) int :

get the total number of finite cells in the triangulation.

normalLubForce((FlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal lubrication force on sphere idSph.

property normalLubrication

compute normal lubrication force as developped by Brule

normalVect((FlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal vector between particles.

normalVelocity((FlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal velocity of the interaction.

property numFactorizeThreads

number of openblas threads in the factorization phase

property numSolveThreads

number of openblas threads in the solve phase.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

onlySpheresInteractions((FlowEngineT)arg1, (int)interaction) int :

Return the id of the interaction only between spheres.

property pZero

The value used for initializing pore pressure. It is useless for incompressible fluid, but important for compressible model.

property permeabilityFactor

Permability multiplier (\(m\)): \(m=1\) (default) attempts to predicty the actual hydraulic conductivity using a Poiseuille equation; \(m>0\) multiplies the default values by \(m\); \(m<0\) defines the conductivity independently of particle size and viscosity as if the material was a homogeneous continuum of conductivity \(-m\)

property permeabilityMap

Enable/disable stocking of average permeability scalar in cell infos.

property phiZero

if >0, considers water aircontent impact on fluid compressibility.

property porosity

Porosity computed at each retriangulation (auto-updated)

property pressureForce

compute the pressure field and associated fluid forces. WARNING: turning off means fluid flow is not computed at all.

pressureProfile((FlowEngineT)arg1, (float)wallUpY, (float)wallDownY) None :

Measure pore pressure in 6 equally-spaced points along the height of the sample

printVertices((FlowEngineT)arg1) None :

Export vertex positions and types

property pumpTorque

Compute pump torque applied on particles

property relax

Gauss-Seidel relaxation

resetLinearSystem((FlowEngineT)arg1) None :

trigger rebuild of the linear system while keeping the same triangulation

saveVtk((FlowEngineT)arg1[, (str)folder='./VTK'[, (bool)withBoundaries=False]]) None :

Save pressure field in vtk format. Specify a folder name for output. The cells adjacent to the bounding spheres are generated conditionally based on FlowEngine::withBoundaries (not compatible with periodic boundaries)

setBoundaryNormal((FlowEngineT)arg1, (int)arg2, (Vector3)arg3) None :

define the unit outward-pointing normal of a boundary (0<=index<=5).

setCellPImposed((FlowEngineT)arg1, (int)id, (bool)pImposed) None :

make cell ‘id’ assignable with imposed pressure.

setCellPressure((FlowEngineT)arg1, (int)id, (float)pressure) None :

set pressure in cell ‘id’.

setCellTImposed((FlowEngineT)arg1, (int)id, (bool)tImposed) None :

make cell ‘id’ assignable with imposed temperature.

setCellTemperature((FlowEngineT)arg1, (int)id, (float)temperature) None :

set temperature in cell ‘id’.

setImposedPressure((FlowEngineT)arg1, (int)cond, (float)p) None :

Set pressure value at the point indexed ‘cond’.

shearLubForce((FlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear lubrication force on sphere idSph.

shearLubTorque((FlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear lubrication torque on sphere idSph.

property shearLubrication

compute shear lubrication force as developped by Brule (FIXME: ref.)

shearVelocity((FlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear velocity of the interaction.

property sineAverage

Pressure value (average) when sinusoidal pressure is applied

property sineMagnitude

Pressure value (amplitude) when sinusoidal pressure is applied (p )

property slipBoundary

Controls friction condition on lateral walls

property stiffness

equivalent contact stiffness used in the lubrication model

surfaceDistanceParticle((FlowEngineT)arg1, (int)interaction) float :

Return the distance between particles.

surfaceSolidThroatInPore((FlowEngineT)arg1, (int)cellId, (int)throatIndex) float :

returns solid area in the throat (index 0-3), keeping only that part of the throat in cell.

property tZero

The value used for initializing pore temperatures in thermalEngine.

property tempDependentViscosity

boolean to vary viscosity (ultimately cell permeability) with cell temperature. Linear model for viscosity b/w 20-70 degC. If true, kFactor must also be set negative, and becomes the darcy permeability.

property thermalBndCondValue

Imposed temperature boundary condition value for the cells in the triangulation (used with ThermalEngine only).

property thermalEngine

activate thermalEngine within FlowEngine.

property thermalPorosity

>0 means the void volume space will be factored by thermalPorosity for pore internal energy considerations.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property tolerance

Gauss-Seidel tolerance

property twistTorque

Compute twist torque applied on particles

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

updateBCs((FlowEngineT)arg1) None :

Update the boundary condition to reflect changes of boundary pressure (needed typically after changing FlowEngine::bndCondValue). It is not sufficient to reflect changes of the type of boundary condition (FlowEngine::bndCondIsPressure), in such case re-triangulation or at least updating the linear system is needed (see FlowEngine::updateTriangulation and FlowEngine::updateLinearSystem). Conversely, the update is not necessary for changing the value of point-wise imposed pressure (FlowEngine::imposePressure)

property updateTriangulation

If true the medium is retriangulated. Can be switched on to force retriangulation after some events (else it will be true periodicaly based on FlowEngine::defTolerance and FlowEngine::meshUpdateInterval. Of course, it costs CPU time. Note that the new triangulation will start to be effectively used only after one iteration (i.e. O.run(2) gives a result with the new one, O.run(1) does not).

updateVolumes((FlowEngineT)arg1) None :

update rates of volume change

property useSolver

Solver to use. 0:Gauss-Seidel, 3: Cholesky factorization (via Eigen3 interface), 4:multicore CPU or GPU accelerated CHOLMOD (without Eigen3), 1-2: undefined.

property viscosity

viscosity of the fluid

property viscousNormalBodyStress

compute normal viscous stress applied on each body

property viscousShear

compute viscous shear terms as developped by Donia Marzougui (FIXME: ref.)

property viscousShearBodyStress

compute shear viscous stress applied on each body

volume((FlowEngineT)arg1[, (int)id=0]) float :

Returns the volume of Voronoi’s cell of a sphere.

property volumeCorrection

Volume correction factor (not user controlled. auto computed if FlowEngine::desiredPorosity != 0)

property volumeFactor

Factor used for simulating low porosity (for thermal considerations only) in high porosity DEM packings.

property wallIds

body ids of the boundaries (default values are ok only if aabbWalls are appended before spheres, i.e. numbered 0,…,5)

property wallThickness

Walls thickness

property waveAction

Allow sinusoidal pressure condition to simulate ocean waves

property xmax

See FlowEngine::xmin.

property xmin

Index of the boundary \(x_{min}\). This index is not equal the the id of the corresponding body in general, it may be used to access the corresponding attributes (e.g. flow.bndCondValue[flow.xmin], flow.wallId[flow.xmin],…).

property ymax

See FlowEngine::xmin.

property ymin

See FlowEngine::xmin.

property zmax

See FlowEngine::xmin.

property zmin

See FlowEngine::xmin.

class yade.wrapper.FlowEngine_PeriodicInfo(inherits PartialEngine Engine Serializable)

A generic engine from wich more specialized engines can inherit. It is defined for the sole purpose of inserting the right data classes CellInfo and VertexInfo in the triangulation, and it should not be used directly. Instead, look for specialized engines, e.g. FlowEngine, PeriodicFlowEngine, or DFNFlowEngine.

OSI((FlowEngine_PeriodicInfo)arg1) float :

Return the number of interactions only between spheres.

property alphaBound

if 0, use an alphaBoundary condition where CGAL finds minimum alpha necessary for a single solid object. Any positive value will be used for the alpha. All negative values deactivate the functionality.

property alphaBoundValue

value of alpha constant pressure condition

avFlVelOnSph((FlowEngine_PeriodicInfo)arg1, (int)idSph) object :

compute a sphere-centered average fluid velocity

property averageCavityPressure

true means the pressure in the cavity will be averaged each iteration.

averagePressure((FlowEngine_PeriodicInfo)arg1) float :

Measure averaged pore pressure in the entire volume, the cells adjacent to the boundaries are ignored if includeBoundaries=False

averageSlicePressure((FlowEngine_PeriodicInfo)arg1, (float)posY) float :

Measure slice-averaged pore pressure at height posY

averageVelocity((FlowEngine_PeriodicInfo)arg1) Vector3 :

measure the mean velocity in the period

blockCell((FlowEngine_PeriodicInfo)arg1, (int)id, (bool)blockPressure) None :

block cell ‘id’. The cell will be excluded from the fluid flow problem and the conductivity of all incident facets will be null. If blockPressure=False, deformation is reflected in the pressure, else it is constantly 0.

property blockHook

Python command to be run when remeshing. Anticipated usage: define blocked cells (see also FlowEngine.blockCell), or apply exotic types of boundary conditions which need to visit the newly built mesh

property bndCondIsPressure

defines the type of boundary condition for each side. True if pressure is imposed, False for no-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondIsTemperature

defines the type of boundary condition for each side of triangulation (used with ThermalEngine only). True if temperature is imposed, False for no heat-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondValue

Imposed value of a boundary condition. Only applies if the boundary condition is imposed pressure, else the imposed flux is always zero presently (may be generalized to non-zero imposed fluxes in the future).

bodyNormalLubStress((FlowEngine_PeriodicInfo)arg1, (int)idSph) Matrix3 :

Return the normal lubrication stress on sphere idSph.

bodyShearLubStress((FlowEngine_PeriodicInfo)arg1, (int)idSph) Matrix3 :

Return the shear lubrication stress on sphere idSph.

property boundaryPressure

values defining pressure along x-axis for the top surface. See also FlowEngine::boundaryXPos

property boundaryUseMaxMin

If true (default value) bounding sphere is added as function of max/min sphere coord, if false as function of yade wall position

property boundaryVelocity

velocity on top boundary, only change it using FlowEngine::setBoundaryVel

property boundaryXPos

values of the x-coordinate for which pressure is defined. See also FlowEngine::boundaryPressure

property breakControlledRemesh

If true, remesh will occur everytime a break occurs in JCFpmPhys. Designed to increase accuracy and efficiency in hydraulic fracture simulations.

property cavityFactor

Permeability/viscosity for cavity cell neighbors (arbitrarily high to model triangulated fluid filled cavity).

property cavityFluidDensity

>0 means cavity compressibility model considers density changes instead of volume changes.

property cavityFlux

For adding flux to pressuremanaged cavity model (FlowEngine::controlCavityPressure). Negavite influx, postive outflux.

cholmodStats((FlowEngine_PeriodicInfo)arg1) None :

get statistics of cholmod solver activity

property clampKValues

If true, clamp local permeabilities in [minKdivKmean,maxKdivKmean]*globalK. This clamping can avoid singular values in the permeability matrix and may reduce numerical errors in the solve phase. It will also hide junk values if they exist, or bias all values in very heterogeneous problems. So, use this with care.

clearImposedFlux((FlowEngine_PeriodicInfo)arg1) None :

Clear the list of points with flux imposed.

clearImposedPressure((FlowEngine_PeriodicInfo)arg1) None :

Clear the list of points with pressure imposed.

compTessVolumes((FlowEngine_PeriodicInfo)arg1) None :

Like TesselationWrapper::computeVolumes()

property controlCavityPressure

use full cavity flux and fluidbulkmodulus to control cavity as dynamic pressure (dirichlet) boundary condition.

property controlCavityVolumeChange

cavity imposes a volume change on neighbor cells (shouldnt be used with controlCavityPressure)

property convertClumps

If true the clumps will be temptatively converted into equivalent spheres in the triangulation, and clump members are skipped. Else clumps are ignored and spherical clump members are triangulated as independent bodies.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property debug

Activate debug messages

property decoupleForces

If true, viscous and pressure forces are not imposed on particles. Useful for speeding up simulations in ultra-stiff cohesive materials.

property defTolerance

Cumulated deformation threshold for which retriangulation of pore space is performed. If negative, the triangulation update will occure with a fixed frequency on the basis of FlowEngine::meshUpdateInterval

property desiredPorosity

Correct the cell volumes to reflect this desired porosity (not active by default (0)).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property doInterpolate

Force the interpolation of cell’s info while remeshing. By default, interpolation would be done only for compressible fluids. It can be forced with this flag.

property dt

timestep [s]

edgeSize((FlowEngine_PeriodicInfo)arg1) float :

Return the number of interactions.

emulateAction((FlowEngine_PeriodicInfo)arg1) None :

get scene and run action (may be used to manipulate an engine outside the timestepping loop).

property eps

roughness defined as a fraction of particles size, giving the minimum distance between particles in the lubrication model.

property epsVolMax

Maximal absolute volumetric strain computed at each iteration. (auto-updated)

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

exportMatrix((FlowEngine_PeriodicInfo)arg1[, (str)filename='matrix']) None :

Export system matrix to a file with all entries (even zeros will displayed).

exportTriplets((FlowEngine_PeriodicInfo)arg1[, (str)filename='triplets']) None :

Export system matrix to a file with only non-zero entries.

property first

Controls the initialization/update phases

property fixTriUpdatePermInt

If positive, triangulation is fixed and DFNFlow trickPermeability is run according to the interval. Activating this automatically sets FlowEngine::meshUpdateInt and FlowEngine::defTolerance to -1 (never retriangulate).

property fixedAlpha

If true, a constant-sized alpha vertex will be placed exactly above each facet. If false, logic is used to improve cell sizes in concave regions.

property flatThreshold

If >=0, pore volumes below flatThreshold value are blocked from flow calc. Useful for compressible flow involving odd triangulations with some very flat pores.

property fluidBulkModulus

Bulk modulus of fluid (inverse of compressibility) K=-dP*V/dV [Pa]. Flow is compressible if fluidBulkModulus > 0, else incompressible.

property fluidCp

Heat capacity of fluid (for thermalEngine).

fluidForce((FlowEngine_PeriodicInfo)arg1, (int)idSph) Vector3 :

Return the fluid force on sphere idSph.

property fluidRho

Density of fluid (for thermalEngine).

property forceMetis

If true, METIS is used for matrix preconditioning, else Cholmod is free to choose the best method (which may be METIS to, depending on the matrix). See nmethods in Cholmod documentation

getBoundaryFluidArea((FlowEngine_PeriodicInfo)arg1, (int)boundary) float :

Get total fluid area associated with boundary defined by its body id.

getBoundaryFlux((FlowEngine_PeriodicInfo)arg1, (int)boundary) float :

Get total flux through boundary defined by its body id.

Note

The flux may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such flux evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

getBoundaryVel((FlowEngine_PeriodicInfo)arg1, (int)boundary) object :

Get total avg cell velocity associated with boundary defined by its body id.

getBoundaryVolume((FlowEngine_PeriodicInfo)arg1, (int)arg2, (float)boundary) float :

Get total volume flowing through boundary defined by its body id in current timestep dt.

Note

The volume may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such volume evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

property getCHOLMODPerfTimings

Print CHOLMOD build, analyze, and factorize timings

getCavityDensity((FlowEngine_PeriodicInfo)arg1) float :

Return the density of cavity fluid.

getCavityFlux((FlowEngine_PeriodicInfo)arg1) float :

Return the flux through the edge of the cavity.

getCell((FlowEngine_PeriodicInfo)arg1, (float)X, (float)Y, (float)Z) int :

get id of the cell containing (X,Y,Z).

getCellBarycenter((FlowEngine_PeriodicInfo)arg1, (int)id) Vector3 :

get barycenter of cell ‘id’.

getCellCenter((FlowEngine_PeriodicInfo)arg1, (int)id) Vector3 :

get voronoi center of cell ‘id’.

getCellFlux((FlowEngine_PeriodicInfo)arg1, (int)cond) float :

Get influx in cell associated to an imposed P (indexed using ‘cond’).

getCellFluxFromId((FlowEngine_PeriodicInfo)arg1, (int)id) float :

Get influx in cell.

getCellInvVoidVolume((FlowEngine_PeriodicInfo)arg1, (int)id) float :

get the inverse of the cell volume for cell ‘id’ after pore volumes have been initialized and FlowEngine:iniVoidVolumes = True, or compressibility scheme active with FlowEngine::fluidBulkModulus.

getCellPImposed((FlowEngine_PeriodicInfo)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed pressure.

getCellPressure((FlowEngine_PeriodicInfo)arg1, (int)id) float :

get pressure by cell ‘id’. Note: getting pressure at position (x,y,z) might be more usefull, see :yref`FlowEngine::getPorePressure`:

getCellTImposed((FlowEngine_PeriodicInfo)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed temperature.

getCellTemperature((FlowEngine_PeriodicInfo)arg1, (int)id) float :

get pressure in cell ‘id’.

getCellVelocity((FlowEngine_PeriodicInfo)arg1, (Vector3)pos) object :

Get relative cell velocity at position pos[0] pos [1] pos[2].

getCellVolume((FlowEngine_PeriodicInfo)arg1, (Vector3)pos) float :

Get volume of cell at position pos[0] pos [1] pos[2].

getConductivity((FlowEngine_PeriodicInfo)arg1, (int)cellId, (int)throat) float :

get conductivity from cell and throat, with throat between 0 and 3 (same ordering as incident cells)

getConstrictions((FlowEngine_PeriodicInfo)arg1[, (bool)all=True]) list :

Get the list of constriction radii (inscribed circle) for all finite facets (if all==True) or all facets not incident to a virtual bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres.

getConstrictionsFull((FlowEngine_PeriodicInfo)arg1[, (bool)all=True]) list :

Get the list of constrictions (inscribed circle) for all finite facets (if all==True), or all facets not incident to a fictious bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres. The constrictions are returned in the format {{cell1,cell2}{rad,nx,ny,nz}}

getDiffusionCoeff((FlowEngine_PeriodicInfo)arg1, (int)cellId, (int)throat) float :

get the ratio of throat cross-sectional area and distance between two cells

getEquivalentCompressibility((FlowEngine_PeriodicInfo)arg1) float :

Return the equivalent compressibility used for modeling air water mixture in cavity.

getIncidentCells((FlowEngine_PeriodicInfo)arg1, (int)vertexId) list :

get ids of all cells of which vertexId is a vertex. Typical usage is for getting cells indident to a boundary.

getNeighbors((FlowEngine_PeriodicInfo)arg1, (int)arg2) list :

get 4 neigboring cells

getPorePressure((FlowEngine_PeriodicInfo)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getPoreTemperature((FlowEngine_PeriodicInfo)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getVertices((FlowEngine_PeriodicInfo)arg1, (int)id) list :

get the vertices of a cell

property idOffset

If the bounding walls of the fluid mesh are not walls of the scene (i.e. are not elements of O.bodies), the offset should be set equal to the size of O.bodies. If the bounding walls are bodies of the scene but are not numbered as 0-5 then offset should be the number of bodies comming before the walls. Set offset<0 to get it set equal to O.bodies.size(), it will also update FlowEngine::wallIds.

property ids

Ids list of bodies affected by this PartialEngine.

property ignoredBody

DEPRECATED, USE MASK - Id of a sphere to exclude from the triangulation.)

imposeCavity((FlowEngine_PeriodicInfo)arg1, (Vector3)pos) int :

Cell with location ‘pos’ participates in a cavity (high conductivity and no volume factoring). The index of the condition is returned (for multiple imposed pressures at different points).

imposeFlux((FlowEngine_PeriodicInfo)arg1, (Vector3)pos, (float)p) None :

Impose a flux in cell located at ‘pos’ (i.e. add a source term in the flow problem). Outflux positive, influx negative.

imposePressure((FlowEngine_PeriodicInfo)arg1, (Vector3)pos, (float)p) int :

Impose pressure in cell of location ‘pos’. The index of the condition is returned (for multiple imposed pressures at different points).

imposePressureFromId((FlowEngine_PeriodicInfo)arg1, (int)id, (float)p) int :

Impose pressure in cell of index ‘id’ (after remeshing the same condition will apply for the same location, regardless of what the new cell index is at this location). The index of the condition itself is returned (for multiple imposed pressures at different points).

property iniVoidVolumes

activate the computation of the inverse of the initial void volumes in each cell when pore volumes are initialized.

initializeVolumes((FlowEngine_PeriodicInfo)arg1) None :

initialize pore volumes.

property isActivated

Activates Flow Engine

isCellNeighbor((FlowEngine_PeriodicInfo)arg1, (int)cell1_ID, (int)cell2_ID) bool :

check if cell1 and cell2 are neigbors.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

If mask defined, only bodies with corresponding groupMask will be affected by this engine. If 0, all bodies will be affected.

property maxKdivKmean

define the max K value (see FlowEngine::clampKValues)

property meanKStat

report the local permeabilities’ correction

property meshUpdateInterval

Maximum number of timesteps between re-triangulation events (a negative value will never re-triangulate). See also FlowEngine::defTolerance.

metisUsed((FlowEngine_PeriodicInfo)arg1) bool :

check wether metis lib is effectively used

property minKdivKmean

define the min K value (see FlowEngine::clampKValues)

property minimumPorosity

value used to limit the allowable minimum porosity for pore volume calculations. Particularly useful if very small volumes are impacting stability

property multithread

Build triangulation and factorize in the background (multi-thread mode)

nCells((FlowEngine_PeriodicInfo)arg1) int :

get the total number of finite cells in the triangulation.

normalLubForce((FlowEngine_PeriodicInfo)arg1, (int)idSph) Vector3 :

Return the normal lubrication force on sphere idSph.

property normalLubrication

compute normal lubrication force as developped by Brule

normalVect((FlowEngine_PeriodicInfo)arg1, (int)idSph) Vector3 :

Return the normal vector between particles.

normalVelocity((FlowEngine_PeriodicInfo)arg1, (int)idSph) Vector3 :

Return the normal velocity of the interaction.

property numFactorizeThreads

number of openblas threads in the factorization phase

property numSolveThreads

number of openblas threads in the solve phase.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

onlySpheresInteractions((FlowEngine_PeriodicInfo)arg1, (int)interaction) int :

Return the id of the interaction only between spheres.

property pZero

The value used for initializing pore pressure. It is useless for incompressible fluid, but important for compressible model.

property permeabilityFactor

Permability multiplier (\(m\)): \(m=1\) (default) attempts to predicty the actual hydraulic conductivity using a Poiseuille equation; \(m>0\) multiplies the default values by \(m\); \(m<0\) defines the conductivity independently of particle size and viscosity as if the material was a homogeneous continuum of conductivity \(-m\)

property permeabilityMap

Enable/disable stocking of average permeability scalar in cell infos.

property phiZero

if >0, considers water aircontent impact on fluid compressibility.

property porosity

Porosity computed at each retriangulation (auto-updated)

property pressureForce

compute the pressure field and associated fluid forces. WARNING: turning off means fluid flow is not computed at all.

pressureProfile((FlowEngine_PeriodicInfo)arg1, (float)wallUpY, (float)wallDownY) None :

Measure pore pressure in 6 equally-spaced points along the height of the sample

printVertices((FlowEngine_PeriodicInfo)arg1) None :

Export vertex positions and types

property pumpTorque

Compute pump torque applied on particles

property relax

Gauss-Seidel relaxation

resetLinearSystem((FlowEngine_PeriodicInfo)arg1) None :

trigger rebuild of the linear system while keeping the same triangulation

saveVtk((FlowEngine_PeriodicInfo)arg1[, (str)folder='./VTK'[, (bool)withBoundaries=False]]) None :

Save pressure field in vtk format. Specify a folder name for output. The cells adjacent to the bounding spheres are generated conditionally based on FlowEngine::withBoundaries (not compatible with periodic boundaries)

setBoundaryNormal((FlowEngine_PeriodicInfo)arg1, (int)arg2, (Vector3)arg3) None :

define the unit outward-pointing normal of a boundary (0<=index<=5).

setCellPImposed((FlowEngine_PeriodicInfo)arg1, (int)id, (bool)pImposed) None :

make cell ‘id’ assignable with imposed pressure.

setCellPressure((FlowEngine_PeriodicInfo)arg1, (int)id, (float)pressure) None :

set pressure in cell ‘id’.

setCellTImposed((FlowEngine_PeriodicInfo)arg1, (int)id, (bool)tImposed) None :

make cell ‘id’ assignable with imposed temperature.

setCellTemperature((FlowEngine_PeriodicInfo)arg1, (int)id, (float)temperature) None :

set temperature in cell ‘id’.

setImposedPressure((FlowEngine_PeriodicInfo)arg1, (int)cond, (float)p) None :

Set pressure value at the point indexed ‘cond’.

shearLubForce((FlowEngine_PeriodicInfo)arg1, (int)idSph) Vector3 :

Return the shear lubrication force on sphere idSph.

shearLubTorque((FlowEngine_PeriodicInfo)arg1, (int)idSph) Vector3 :

Return the shear lubrication torque on sphere idSph.

property shearLubrication

compute shear lubrication force as developped by Brule (FIXME: ref.)

shearVelocity((FlowEngine_PeriodicInfo)arg1, (int)idSph) Vector3 :

Return the shear velocity of the interaction.

property sineAverage

Pressure value (average) when sinusoidal pressure is applied

property sineMagnitude

Pressure value (amplitude) when sinusoidal pressure is applied (p )

property slipBoundary

Controls friction condition on lateral walls

property stiffness

equivalent contact stiffness used in the lubrication model

surfaceDistanceParticle((FlowEngine_PeriodicInfo)arg1, (int)interaction) float :

Return the distance between particles.

surfaceSolidThroatInPore((FlowEngine_PeriodicInfo)arg1, (int)cellId, (int)throatIndex) float :

returns solid area in the throat (index 0-3), keeping only that part of the throat in cell.

property tZero

The value used for initializing pore temperatures in thermalEngine.

property tempDependentViscosity

boolean to vary viscosity (ultimately cell permeability) with cell temperature. Linear model for viscosity b/w 20-70 degC. If true, kFactor must also be set negative, and becomes the darcy permeability.

property thermalBndCondValue

Imposed temperature boundary condition value for the cells in the triangulation (used with ThermalEngine only).

property thermalEngine

activate thermalEngine within FlowEngine.

property thermalPorosity

>0 means the void volume space will be factored by thermalPorosity for pore internal energy considerations.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property tolerance

Gauss-Seidel tolerance

property twistTorque

Compute twist torque applied on particles

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

updateBCs((FlowEngine_PeriodicInfo)arg1) None :

Update the boundary condition to reflect changes of boundary pressure (needed typically after changing FlowEngine::bndCondValue). It is not sufficient to reflect changes of the type of boundary condition (FlowEngine::bndCondIsPressure), in such case re-triangulation or at least updating the linear system is needed (see FlowEngine::updateTriangulation and FlowEngine::updateLinearSystem). Conversely, the update is not necessary for changing the value of point-wise imposed pressure (FlowEngine::imposePressure)

property updateTriangulation

If true the medium is retriangulated. Can be switched on to force retriangulation after some events (else it will be true periodicaly based on FlowEngine::defTolerance and FlowEngine::meshUpdateInterval. Of course, it costs CPU time. Note that the new triangulation will start to be effectively used only after one iteration (i.e. O.run(2) gives a result with the new one, O.run(1) does not).

updateVolumes((FlowEngine_PeriodicInfo)arg1) None :

update rates of volume change

property useSolver

Solver to use. 0:Gauss-Seidel, 3: Cholesky factorization (via Eigen3 interface), 4:multicore CPU or GPU accelerated CHOLMOD (without Eigen3), 1-2: undefined.

property viscosity

viscosity of the fluid

property viscousNormalBodyStress

compute normal viscous stress applied on each body

property viscousShear

compute viscous shear terms as developped by Donia Marzougui (FIXME: ref.)

property viscousShearBodyStress

compute shear viscous stress applied on each body

volume((FlowEngine_PeriodicInfo)arg1[, (int)id=0]) float :

Returns the volume of Voronoi’s cell of a sphere.

property volumeCorrection

Volume correction factor (not user controlled. auto computed if FlowEngine::desiredPorosity != 0)

property volumeFactor

Factor used for simulating low porosity (for thermal considerations only) in high porosity DEM packings.

property wallIds

body ids of the boundaries (default values are ok only if aabbWalls are appended before spheres, i.e. numbered 0,…,5)

property wallThickness

Walls thickness

property waveAction

Allow sinusoidal pressure condition to simulate ocean waves

property xmax

See FlowEngine::xmin.

property xmin

Index of the boundary \(x_{min}\). This index is not equal the the id of the corresponding body in general, it may be used to access the corresponding attributes (e.g. flow.bndCondValue[flow.xmin], flow.wallId[flow.xmin],…).

property ymax

See FlowEngine::xmin.

property ymin

See FlowEngine::xmin.

property zmax

See FlowEngine::xmin.

property zmin

See FlowEngine::xmin.

class yade.wrapper.ForceEngine(inherits PartialEngine Engine Serializable)

Apply contact force on some particles at each step.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property force

Force to apply.

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.HarmonicForceEngine(inherits PartialEngine Engine Serializable)

This engine adds a harmonic (sinusoidal) force to a set of bodies. It is identical to HarmonicMotionEngine except a force amplitude is prescribed instead of motion, see also the dynamics of harmonic motion

property A

Amplitude [N]

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property f

Frequency [hertz]

property fi

Initial phase [radians]. By default, the phase is zero such that the force starts at zero.

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.HarmonicMotionEngine(inherits KinematicEngine PartialEngine Engine Serializable)

This engine implements the harmonic oscillation of bodies. See also HarmonicForceEngine that applies a harmonic force, see also the dynamics of harmonic motion

property A

Amplitude [m]

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property f

Frequency [hertz]

property fi

Initial phase [radians]. By default, the body oscillates around initial position.

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.HarmonicRotationEngine(inherits RotationEngine KinematicEngine PartialEngine Engine Serializable)

This engine implements the harmonic-rotation oscillation of bodies, see also the dynamics of harmonic motion ; please, set dynamic=False for bodies, droven by this engine, otherwise amplitude will be 2x more, than awaited.

property A

Amplitude [rad]

property angularVelocity

Angular velocity. [rad/s]

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property f

Frequency [hertz]

property fi

Initial phase [radians]. By default, the body oscillates around initial position.

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property rotateAroundZero

If True, bodies will not rotate around their centroids, but rather around zeroPoint.

property rotationAxis

Axis of rotation (direction); will be normalized automatically.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property zeroPoint

Point around which bodies will rotate if rotateAroundZero is True

class yade.wrapper.HelixEngine(inherits RotationEngine KinematicEngine PartialEngine Engine Serializable)

Engine applying both rotation and translation, along the same axis, whence the name HelixEngine

property angleTurned

How much have we turned so far. (auto-updated) [rad]

property angularVelocity

Angular velocity. [rad/s]

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property linearVelocity

Linear velocity [m/s]

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property rotateAroundZero

If True, bodies will not rotate around their centroids, but rather around zeroPoint.

property rotationAxis

Axis of rotation (direction); will be normalized automatically.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property zeroPoint

Point around which bodies will rotate if rotateAroundZero is True

class yade.wrapper.HydroForceEngine(inherits PartialEngine Engine Serializable)
Engine performing a coupling of the DEM with a volume-averaged 1D fluid resolution to simulate steady uniform unidirectional fluid flow. It has been developed and used to model steady uniform gravity-driven turbulent bedload transport [Maurin2015b] [Maurin2016] [Maurin2018], but can be also used in its current state for laminar or pressure-driven configurations. The fundamentals of the model can be found in [Maurin2015b] and [Maurin2015PhD], and in more details in [Maurin2018_VANSbasis], [Maurin2018_VANSfluidResol] and [Maurin2018_VANSvalidations].

The engine can be decomposed in three different parts: (i) It applies the fluid force on the particles imposed by the fluid velocity profiles and fluid properties, (ii) It evaluates averaged solid depth profiles necessary for the fluid force application and for the fluid resolution, (iii) It solve the volume-averaged 1D fluid momentum balance.

The three different functions are detailed below:

(i) Fluid force on particles Apply to each particles, buoyancy, drag and lift force due to a 1D fluid flow and can apply lubrication force between two particles. The applied drag force reads

\(F_{d}=\frac{1}{2} C_d A\rho^f|\vec{v_f - v}| \vec{v_f - v}\)

where \(\rho\) is the fluid density (densFluid), \(v\) is particle’s velocity, \(v_f\) is the velocity of the fluid at the particle center (taken from the fluid velocity profile vxFluid), \(A = \pi d^2/4\) is particle projected area (disc), \(C_d\) is the drag coefficient. The formulation of the drag coefficient depends on the local particle reynolds number and the solid volume fraction. The formulation of the drag is [Dallavalle1948] [RevilBaudard2013] with a correction of Richardson-Zaki [Richardson1954] to take into account the hindrance effect. This law is classical in sediment transport. The possibly activated lubrication force (with parameter:yref:lubrication<HydroForceEngine.lubrication> put to True) reads: \(F_{lubrication} = \frac{6 \pi \eta^f v_rel^n}{\delta^n + \epsilon_r}\), with \(\eta^f\) the fluid dynamic viscosity viscoDyn, \(v_rel^n\) the normal relative velocity of the two particles, \(\delta^n\) the distance between the two particles surface, and \(\epsilon_r\) the roughness scale of the particle (roughnessPartScale).

It is possible to activate a fluctuation of the drag force for each particle which account for the turbulent fluctuation of the fluid velocity (velFluct). Three simple discrete random walk model have been implemented for the turbulent velocity fluctuation. The main one (turbulentFluctuations) takes as input the Reynolds stress tensor \(R^f_{xz}\) as a function of the depth, and allows to recover the main property of the fluctuations by imposing \(<u_x'u_z'> (z) = <R^f_{xz}>(z)/\rho^f\). It requires as input \(<R^f_{xz}>(z)\) called ReynoldStresses in the code.

The formulation of the lift is taken from [Wiberg1985] and is such that :

\(F_{L}=\frac{1}{2} C_L A\rho^f((v_f - v)^2_{top} - (v_f - v)^2_{bottom})\)

Where the subscript top and bottom means evaluated at the top (respectively the bottom) of the sphere considered. This formulation of the lift account for the difference of pressure at the top and the bottom of the particle inside a turbulent shear flow. As this formulation is controversial when approaching the threshold of motion [Schmeeckle2007] it is possible to desactivate it with the variable lift. The buoyancy is taken into account through the buoyant weight :

\(F_{buoyancy}= - \rho^f V^p g\)

, where g is the gravity vector along the vertical, and \(V^p\) is the volume of the particle. In the case where the fluid flow is steady and uniform, the buoyancy reduces to its wall-normal component (see [Maurin2018] for a full explanation), and one should put steadyFlow to true in order to kill the streamwise component.

(ii) Averaged solid depth profiles The function averageProfile evaluates the volume averaged depth profiles (1D) of particle velocity, particle solid volume fraction and particle drag force. It uses a volume-weighting average following [Maurin2015PhD]_[Maurin2015b]_, i.e. the average of a variable \(A^p\) associated to particles at a given discretized wall-normal position \(z\) is given by:

\(\left< A \right>^s(z) = \displaystyle \frac{\displaystyle \sum_{p|z^p\in[z-dz/2,z+dz/2]} A^p(t) V^p_z}{\displaystyle \sum_{p|z^p\in[z-dz/2,z+dz/2]} V^p_z}\)

Where the sums are over the particles contained inside the slice between the wall-normal position \(z-dz/2\) and \(z+dz/2\), and \(V^p\) represents the part of the volume of the given particle effectively contained inside the slice. For more details, see [Maurin2015PhD].

(iii) 1D volume-average fluid resolution The fluid resolution is based on the resolution of the 1D volume-averaged fluid momentum balance. It assumes by definition (unidirectional) that the fluid flow is steady and uniform. It is the same fluid resolution as [RevilBaudard2013]. Details can be found in this paper and in [Maurin2015PhD] [Maurin2015b].

The three different component can be used independently, e.g. applying a fluid force due to an imposed fluid profile or solving the fluid momentum balance for a given concentration of particles.

property Cl

Value of the lift coefficient taken from [Wiberg1985]

property ReynoldStresses

Vector of size equal to nCell containing the Reynolds stresses as a function of the depth. ReynoldStresses(z) \(= \rho^f <u_x'u_z'>(z)^2\)

property averageDrag

Discretized average drag depth profile. No role in the engine, output parameter. For practical reason, it can be evaluated directly inside the engine, calling from python the averageProfile() method of the engine

property averageDrag1

Discretized average drag depth profile of particles of type 1. Evaluated when twoSize is set to True.

property averageDrag2

Discretized average drag depth profile of particles of type 2. Evaluated when twoSize is set to True.

averageProfile((HydroForceEngine)arg1) None :

Compute and store the particle velocity (vxPart, vyPart, vzPart) and solid volume fraction (phiPart) depth profile. For each defined cell z, the k component of the average particle velocity reads:

\(<v_k>^z= \sum_p V^p v_k^p/\sum_p V^p\),

where the sum is made over the particles contained in the cell, \(v_k^p\) is the k component of the velocity associated to particle p, and \(V^p\) is the part of the volume of the particle p contained inside the cell. This definition allows to smooth the averaging, and is equivalent to taking into account the center of the particles only when there is a lot of particles in each cell. As for the solid volume fraction, it is evaluated in the same way: for each defined cell z, it reads:

\(<\phi>^z= \frac{1}{V_{cell}}\sum_p V^p\), where \(V_{cell}\) is the volume of the cell considered, and \(V^p\) is the volume of particle p contained in cell z. This function gives depth profiles of average velocity and solid volume fraction, returning the average quantities in each cell of height dz, from the reference horizontal plane at elevation zRef (input parameter) until the plane of elevation zRef plus nCell times deltaZ (input parameters). When the option twoSize is set to True, evaluate in addition the average drag (averageDrag1 and averageDrag2) and solid volume fraction (phiPart1 and phiPart2) depth profiles considering only the particles of radius respectively radiusPart1 and radiusPart2 in the averaging.

property bedElevation

Elevation of the bed above which the fluid flow is turbulent and the particles undergo turbulent velocity fluctuation.

property channelWidth

Fluid resolution: Channel width for the evaluation of the fluid wall friction inside the fluid resolution.

property compatibilityOldVersion

Option to make HydroForceEngine compatible with former scripts. Slow down slightly the calculation and will eventually be removed.

computeRadiusParts((HydroForceEngine)arg1) None :

compute the different class of radius present in the simulation.

property convAcc

Convective acceleration, depth dependent

property convAccOption

To activate the convective acceleration option in order to account for a convective acceleration term inside the momentum balance.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property deltaZ

Height of the discretization cell.

property densFluid

Density of the fluid, by default - density of water

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property dpdx

pressure gradient along streamwise direction

property dtFluct

Execution time step of the turbulent fluctuation model.

property enableMultiClassAverage

Enables specific averaging for all the different particle size. Uses a lot of memory if using a lots of different particle size

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property expoRZ

Value of the Richardson-Zaki exponent, for the drag correction due to hindrance

property fluctTime

Vector containing the time of life of the fluctuations associated to each particles.

property fluidFrictionCoef

Fluid resolution: fitting coefficient for the fluid wall friction

fluidResolution((HydroForceEngine)arg1, (float)arg2, (float)arg3) None :

Solve the 1D volume-averaged fluid momentum balance on the defined mesh (nCell, deltaZ) from the volume-averaged solid profiles (phiPart,:yref:vxPart<HydroForceEngine.vxPart>,:yref:averageDrag<HydroForceEngine.averageDrag>), which can be evaluated with the averageProfile function.

property fluidWallFriction

Fluid resolution: if set to true, introduce a sink term to account for the fluid friction at the wall, see [Maurin2015] for details. Requires to set the width of the channel. It might slow down significantly the calculation.

property gravity

Gravity vector

property ids

Ids list of bodies affected by this PartialEngine.

property ilm

Fluid resolution: type of mixing length resolution applied: 0: classical Prandtl mixing length, 1: Prandtl mixing length with free-surface effects, 2: Damp turbulence accounting for the presence of particles [Li1995], see [RevilBaudard2013] for more details.

initialization((HydroForceEngine)arg1) None :

Initialize the necessary parameters to make HydroForceEngine run. Necessary to execute before any simulation run, otherwise it crashes

property irheolf

Fluid resolution: effective fluid viscosity option: 0: pure fluid viscosity, 1: Einstein viscosity.

property iturbu

Fluid resolution: activate the turbulence resolution, 1, or not, 0

property iusl

Fluid resolution: option to set the boundary condition at the top of the fluid, 0: Dirichlet, fixed (\(u=uTop\) en \(z=h\)), 1:Neumann, free-surface (\(du/dz=0\) en \(z=h\)).

property kappa

Fluid resolution: Von Karman constant. Can be tuned to account for the effect of particles on the fluid turbulence, see e.g. [RevilBaudard2015]

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property lift

Option to activate or not the evaluation of the lift

property lubrication

Condition to activate the calculation of the lubrication force.

property multiDragPart

Spatial-averaged mean drag force for each class of particle. Un-used ? Or just for debug.

property multiPhiPart

Spatial-averaged solid volume fraction for each class of particle.

property multiVxPart

Spatial-averaged velocity in x direction for each class of particle.

property multiVyPart

Spatial-averaged velocity in y direction for each class of particle.

property multiVzPart

Spatial-averaged velocity in z direction for each class of particle.

property nCell

Number of cell in the depth

property nbAverageT

If >0, perform a time-averaging (in addition to the spatial averaging) over nbAverage steps.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property phiBed

Turbulence modelling parameter. Associated with mixing length modelling ilm = 5.

property phiMax

Fluid resolution: maximum solid volume fraction.

property phiPart

Discretized solid volume fraction depth profile. Can be taken as input parameter or evaluated directly inside the engine, calling from python the averageProfile() function

property phiPart1

Discretized solid volume fraction depth profile of particles of type 1. Evaluated when twoSize is set to True.

property phiPart2

Discretized solid volume fraction depth profile of particles of type 2. Evaluated when twoSize is set to True.

property pointParticleAverage

Evaluate the averaged with a point particle method. If False, consider the particle extent and weigth the averaged by the volume contained in each averaging cell.

property radiusPart

Reference particle radius

property radiusPart1

Radius of the particles of type 1. Useful only when twoSize is set to True.

property radiusPart2

Radius of the particles of type 2. Useful only when twoSize is set to True.

property radiusParts

Variables containing the number of different radius of particles in the simulation. Allow to perform class averaging by particle size.

property roughnessPartScale

Roughness length scale of the particle. In practice, the lubrication force is cut off when the two particles are at a distance roughnessPartScale.

property steadyFlow

Condition to modify the buoyancy force according to the physical difference between a fluid at rest and a steady fluid flow. For more details see [Maurin2018]

property taufsi

Fluid Resolution: Create Taufsi/rhof = dragTerm/(rhof(vf-vxp)) to transmit to the fluid code

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

turbulentFluctuation((HydroForceEngine)arg1) None :

Apply a discrete random walk model to the evaluation of the drag force to account for the fluid velocity turbulent fluctuations. Very simple model applying fluctuations from the values of the Reynolds stresses in order to recover the property \(<u_x'u_z'> (z) = <R^f_{xz}>(z)/\rho^f\). The random fluctuations are modified over a time scale given by the eddy turn over time.

turbulentFluctuationZDep((HydroForceEngine)arg1) None :

Apply turbulent fluctuation to the problem similarly to turbulentFluctuation but with an update of the fluctuation depending on the particle position.

property turbulentViscosity

Fluid Resolution: turbulent viscocity as a function of the depth

property twoSize

Not maintained anymore. Option to activate when considering two particle size in the simulation. When activated evaluate the average solid volume fraction and drag force for the two type of particles of diameter diameterPart1 and diameterPart2 independently.

property uTop

Fluid resolution: fluid velocity at the top boundary when iusl = 0

property unCorrelatedFluctuations

Condition to generate uncorrelated fluid fluctuations. Default case represent in free-surface flows, for which the vertical and streamwise fluid velocity fluctuations are correlated (see e.g. reference book of Nezu & Nagakawa 1992, turbulence in open channel flows).

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vCell

Volume of averaging cell

property vFluctX

Vector associating a streamwise fluid velocity fluctuation to each particle. Fluctuation calculated in the C++ code from the discrete random walk model

property vFluctY

Vector associating a spanwise fluid velocity fluctuation to each particle. Fluctuation calculated in the C++ code from the discrete random walk model

property vFluctZ

Vector associating a normal fluid velocity fluctuation to each particle. Fluctuation calculated in the C++ code from the discrete random walk model

property vPart

Discretized streamwise solid velocity depth profile, in x, y and z direction. Only the x direction measurement is taken into account in the 1D fluid coupling resolution. The two other can be used as output parameters. The x component can be taken as input parameter, or evaluated directly inside the engine, calling from python the averageProfile() function

property velFluct

If true, activate the determination of turbulent fluid velocity fluctuation for the next time step only at the position of each particle, using a simple discrete random walk (DRW) model based on the Reynolds stresses profile (ReynoldStresses)

property viscoDyn

Dynamic viscosity of the fluid, by default - viscosity of water

property viscousSubLayer

Fluid resolution: solve the viscous sublayer close to the bottom boundary if set to 1

property vxFluid

Discretized streamwise fluid velocity depth profile at t

property vxPart

Discretized streamwise solid velocity depth profile. Can be taken as input parameter, or evaluated directly inside the engine, calling from python the averageProfile() function

property vxPart1

Discretized solid streamwise velocity depth profile of particles of type 1. Evaluated when twoSize is set to True.

property vxPart2

Discretized solid streamwise velocity depth profile of particles of type 2. Evaluated when twoSize is set to True.

property vyPart

Discretized spanwise solid velocity depth profile. Can be taken as input parameter, or evaluated directly inside the engine, calling from python the averageProfile() function

property vyPart1

Discretized solid spanwise velocity depth profile of particles of type 1. Evaluated when twoSize is set to True.

property vyPart2

Discretized solid spanwise velocity depth profile of particles of type 2. Evaluated when twoSize is set to True.

property vzPart

Discretized wall-normal solid velocity depth profile. Can be taken as input parameter, or evaluated directly inside the engine, calling from python the averageProfile() function

property vzPart1

Discretized solid wall-normal velocity depth profile of particles of type 1. Evaluated when twoSize is set to True.

property vzPart2

Discretized solid wall-normal velocity depth profile of particles of type 2. Evaluated when twoSize is set to True.

property zRef

Position of the reference point which correspond to the first value of the fluid velocity, i.e. to the ground.

class yade.wrapper.InterpolatingDirectedForceEngine(inherits ForceEngine PartialEngine Engine Serializable)

Engine for applying force of varying magnitude but constant direction on subscribed bodies. times and magnitudes must have the same length, direction (normalized automatically) gives the orientation.

As usual with interpolating engines: the first magnitude is used before the first time point, last magnitude is used after the last time point. Wrap specifies whether time wraps around the last time point to the first time point.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property direction

Contact force direction (normalized automatically)

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property force

Force to apply.

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property magnitudes

Force magnitudes readings [N]

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property times

Time readings [s]

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wrap

wrap to the beginning of the sequence if beyond the last time point

class yade.wrapper.InterpolatingHelixEngine(inherits HelixEngine RotationEngine KinematicEngine PartialEngine Engine Serializable)

Engine applying spiral motion, finding current angular velocity by linearly interpolating in times and velocities and translation by using slope parameter.

The interpolation assumes the margin value before the first time point and last value after the last time point. If wrap is specified, time will wrap around the last times value to the first one (note that no interpolation between last and first values is done).

property angleTurned

How much have we turned so far. (auto-updated) [rad]

property angularVelocities

List of angular velocities; manadatorily of same length as times. [rad/s]

property angularVelocity

Angular velocity. [rad/s]

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property linearVelocity

Linear velocity [m/s]

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property rotateAroundZero

If True, bodies will not rotate around their centroids, but rather around zeroPoint.

property rotationAxis

Axis of rotation (direction); will be normalized automatically.

property slope

Axial translation per radian turn (can be negative) [m/rad]

property times

List of time points at which velocities are given; must be increasing [s]

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wrap

Wrap t if t>times_n, i.e. t_wrapped=t-N*(times_n-times_0)

property zeroPoint

Point around which bodies will rotate if rotateAroundZero is True

class yade.wrapper.KinematicEngine(inherits PartialEngine Engine Serializable)

Abstract engine for applying prescribed displacement.

Note

Derived classes should override the apply with given list of ids (not action with PartialEngine.ids), so that they work when combined together; velocity and angular velocity of all subscribed bodies is reset before the apply method is called, it should therefore only increment those quantities.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.LawTester(inherits PartialEngine Engine Serializable)

Prescribe and apply deformations of an interaction in terms of local mutual displacements and rotations. The loading path is specified either using path (as sequence of 6-vectors containing generalized displacements \(u_x\), \(u_y\), \(u_z\), \(\phi_x\), \(\phi_y\), \(\phi_z\)) or disPath (\(u_x\), \(u_y\), \(u_z\)) and rotPath (\(\phi_x\), \(\phi_y\), \(\phi_z\)). Time function with time values (step numbers) corresponding to points on loading path is given by pathSteps. Loading values are linearly interpolated between given loading path points, and starting zero-value (the initial configuration) is assumed for both path and pathSteps. hooks can specify python code to run when respective point on the path is reached; when the path is finished, doneHook will be run.

LawTester should be placed between InteractionLoop and NewtonIntegrator in the simulation loop, since it controls motion via setting linear/angular velocities on particles; those velocities are integrated by NewtonIntegrator to yield an actual position change, which in turn causes IGeom to be updated (and contact law applied) when InteractionLoop is executed. Constitutive law generating forces on particles will not affect prescribed particle motion, since both particles have all DoFs blocked when first used with LawTester.

LawTester uses, as much as possible, IGeom to provide useful data (such as local coordinate system), but is able to compute those independently if absent in the respective IGeom:

IGeom

#DoFs

LawTester support level

L3Geom

3

full

L6Geom

6

full

ScGeom

3

emulate local coordinate system

ScGeom6D

6

emulate local coordinate system

Depending on IGeom, 3 (\(u_x\), \(u_y\), \(u_z\)) or 6 (\(u_x\), \(u_y\), \(u_z\), \(\phi_x\), \(\phi_y\), \(\phi_z\)) degrees of freedom (DoFs) are controlled with LawTester, by prescribing linear and angular velocities of both particles in contact. All DoFs controlled with LawTester are orthogonal (fully decoupled) and are controlled independently.

When 3 DoFs are controlled, rotWeight controls whether local shear is applied by moving particle on arc around the other one, or by rotating without changing position; although such rotation induces mutual rotation on the interaction, it is ignored with IGeom with only 3 DoFs. When 6 DoFs are controlled, only arc-displacement is applied for shear, since otherwise mutual rotation would occur.

idWeight distributes prescribed motion between both particles (resulting local deformation is the same if id1 is moved towards id2 or id2 towards id1). This is true only for \(u_x\), \(u_y\), \(u_z\), \(\phi_x\) however ; bending rotations \(\phi_y\), \(\phi_z\) are nevertheless always distributed regardless of idWeight to both spheres in inverse proportion to their radii, so that there is no shear induced.

LawTester knows current contact deformation from 2 sources: from its own internal data (which are used for prescribing the displacement at every step), which can be accessed in uTest, and from IGeom itself (depending on which data it provides), which is stored in uGeom. These two values should be identical (disregarding numerical percision), and it is a way to test whether IGeom and related functors compute what they are supposed to compute.

LawTester-operated interactions can be rendered with GlExtra_LawTester renderer.

See scripts/test/law-test.py for an example.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property disPath

Loading path, where each Vector3 contains desired normal displacement and two components of the shear displacement (in local coordinate system, which is being tracked automatically. If shorter than rotPath, the last value is repeated.

property displIsRel

Whether displacement values in disPath are normalized by reference contact length (r1+r2 for 2 spheres).

property doneHook

Python command (as string) to run when end of the path is achieved. If empty, the engine will be set dead.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property hooks

Python commands to be run when the corresponding point in path is reached, before doing other things in that particular step. See also doneHook.

property idWeight

Float, usually ∈〈0,1〉, determining on how are displacements distributed between particles (0 for id1, 1 for id2); intermediate values will apply respective part to each of them. This parameter is ignored with 6-DoFs IGeom.

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property pathSteps

Step number for corresponding values in path; if shorter than path, distance between last 2 values is used for the rest.

property refLength

Reference contact length, for rendering only.

property renderLength

Characteristic length for the purposes of rendering, set equal to the smaller radius.

property rotPath

Rotational components of the loading path, where each item contains torsion and two bending rotations in local coordinates. If shorter than path, the last value is repeated.

property rotWeight

Float ∈〈0,1〉 determining whether shear displacement is applied as rotation or displacement on arc (0 is displacement-only, 1 is rotation-only). Not effective when mutual rotation is specified.

property step

Step number in which this engine is active; determines position in path, using pathSteps.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property trsf

Transformation matrix for the local coordinate system. (auto-updated)

property uGeom

Current generalized displacements (3 displacements, 3 rotations), as stored in the interation itself. They should corredpond to uTest, otherwise a bug is indicated.

property uTest

Current generalized displacements (3 displacements, 3 rotations), as they should be according to this LawTester. Should correspond to uGeom.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property uuPrev

Generalized displacement values reached in the previous step, for knowing which increment to apply in the current step.

class yade.wrapper.LinearDragEngine(inherits PartialEngine Engine Serializable)

Apply viscous resistance or linear drag on some particles at each step, decelerating them proportionally to their linear velocities. The applied force reads

\[F_{d}=-b{\vec{v}}\]

where \(b\) is the linear drag, \(\vec{v}\) is particle’s velocity.

\[b=6\pi\nu r \]

where \(\nu\) is the medium viscosity, \(r\) is the Stokes radius of the particle (but in this case we accept it equal to sphere radius for simplification),

Note

linear drag is only applied to spherical particles, listed in ids.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property nu

Viscosity of the medium.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.PartialSatClayEngine(inherits PartialSatClayEngineT PartialEngine Engine Serializable)

Engine designed to simulate the partial saturation of clay and associated swelling.

property Ka

bulk modulus of air used for equivalent compressibility model

property Ks

bulkmodulus of solid used for equivalent compressibility model

property Kw

bulkmodulus of water used for equivalent compressibility model

OSI((PartialSatClayEngineT)arg1) float :

Return the number of interactions only between spheres.

property Po

Po parameter for Van Genuchten model, Free swelling 0.04e6. If porosity is distributed, this value becomes cell based.

property SrM

residual saturation for empirical relative saturation based permeability relationship

property SsM

saturated saturation for empirical relative saturation based permeability relationship

property a

parameter a for evolution of Po as a function of porosity

property airViscosity

Used with PartialSatClayEngine::getGasPerm for crack permeability estimates.

property allCellsFractured

use to simulate all pores fractured for debugging purposes only

property alphaBound

if 0, use an alphaBoundary condition where CGAL finds minimum alpha necessary for a single solid object. Any positive value will be used for the alpha. All negative values deactivate the functionality.

property alphaBoundValue

value of alpha constant pressure condition

property alphaExpRate

rate of exponential distribution for porosity distribution

property alpham

alpha parameter for particle volumetric strain model MPa^-1

property apertureFactor

factor to consider tortuosity

artificialParticleSwell((PartialSatClayEngine)arg1, (float)volStrain) None :

Artificially swell all particles by the strain provided during next time step. Does not reactivate itself for next time step, user must call for each timestep they want to use it.

avFlVelOnSph((PartialSatClayEngineT)arg1, (int)idSph) object :

compute a sphere-centered average fluid velocity

property averageCavityPressure

true means the pressure in the cavity will be averaged each iteration.

averagePressure((PartialSatClayEngineT)arg1) float :

Measure averaged pore pressure in the entire volume, the cells adjacent to the boundaries are ignored if includeBoundaries=False

averageSlicePressure((PartialSatClayEngineT)arg1, (float)posY) float :

Measure slice-averaged pore pressure at height posY

averageVelocity((PartialSatClayEngineT)arg1) Vector3 :

measure the mean velocity in the period

property b

parameter b for evolution of lambda as a function of porosity

property bIntrinsicPerm

b parameter for dependency of intrinsic permeability on macroporosity Gens 2011. Not active if 0 (default). Mokni2016 uses 8

property betaExpRate

rate of exponential distribution for porosity distribution

property betaLaplaceShape

shape of laplace distribution used for porosity distribution

property betam

beta parameter for particle volumetric strain model MPa^-1

blockCell((PartialSatClayEngineT)arg1, (int)id, (bool)blockPressure) None :

block cell ‘id’. The cell will be excluded from the fluid flow problem and the conductivity of all incident facets will be null. If blockPressure=False, deformation is reflected in the pressure, else it is constantly 0.

property blockCellPoroThreshold

If >0, any cell above this porosity will be blocked from the beginning (partially sat crack should not participate).

property blockHook

Python command to be run when remeshing. Anticipated usage: define blocked cells (see also FlowEngine.blockCell), or apply exotic types of boundary conditions which need to visit the newly built mesh

property blockIsoCells

search for cells that might be surrounded by blocked (minerals or cracks) and block them to avoid numerical instabilities.

property bndCondIsPressure

defines the type of boundary condition for each side. True if pressure is imposed, False for no-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondIsTemperature

defines the type of boundary condition for each side of triangulation (used with ThermalEngine only). True if temperature is imposed, False for no heat-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondValue

Imposed value of a boundary condition. Only applies if the boundary condition is imposed pressure, else the imposed flux is always zero presently (may be generalized to non-zero imposed fluxes in the future).

bodyNormalLubStress((PartialSatClayEngineT)arg1, (int)idSph) Matrix3 :

Return the normal lubrication stress on sphere idSph.

bodyShearLubStress((PartialSatClayEngineT)arg1, (int)idSph) Matrix3 :

Return the shear lubrication stress on sphere idSph.

property boundaryPressure

values defining pressure along x-axis for the top surface. See also FlowEngine::boundaryXPos

property boundaryUseMaxMin

If true (default value) bounding sphere is added as function of max/min sphere coord, if false as function of yade wall position

property boundaryVelocity

velocity on top boundary, only change it using FlowEngine::setBoundaryVel

property boundaryXPos

values of the x-coordinate for which pressure is defined. See also FlowEngine::boundaryPressure

property breakControlledRemesh

If true, remesh will occur everytime a break occurs in JCFpmPhys. Designed to increase accuracy and efficiency in hydraulic fracture simulations.

property brokenBondsRemoveCapillaryforces

if true, broken bonds will also remove any capillary forces associated with the area of the crack

property calcCrackArea

The amount of crack per pore is updated if calcCrackArea=True

property cavityFactor

Permeability/viscosity for cavity cell neighbors (arbitrarily high to model triangulated fluid filled cavity).

property cavityFluidDensity

>0 means cavity compressibility model considers density changes instead of volume changes.

property cavityFlux

For adding flux to pressuremanaged cavity model (FlowEngine::controlCavityPressure). Negavite influx, postive outflux.

property changeCrackSaturation

if cell becomes cracked, its saturation is reduced to residual saturation (warning this is not conservative). Useful for reducing partial sat permeability in these cells.

cholmodStats((PartialSatClayEngineT)arg1) None :

get statistics of cholmod solver activity

property clampKValues

If true, clamp local permeabilities in [minKdivKmean,maxKdivKmean]*globalK. This clamping can avoid singular values in the permeability matrix and may reduce numerical errors in the solve phase. It will also hide junk values if they exist, or bias all values in very heterogeneous problems. So, use this with care.

clearImposedFlux((PartialSatClayEngineT)arg1) None :

Clear the list of points with flux imposed.

clearImposedPressure((PartialSatClayEngineT)arg1) None :

Clear the list of points with pressure imposed.

property collectedDT

this is the exact time step that is computed, it enables the stiffness timestep estimate to change dynamically while maintaining an exact match for the flow timestep

compTessVolumes((PartialSatClayEngineT)arg1) None :

Like TesselationWrapper::computeVolumes()

property computeFracturePaths

if true, fracture paths connecting to boundary conditions will become pcondition cells and forces will be computed using atmospheric pressure.

property constantPorosity

use the meanInitialPorosity everywhere instead of random distribution

property controlCavityPressure

use full cavity flux and fluidbulkmodulus to control cavity as dynamic pressure (dirichlet) boundary condition.

property controlCavityVolumeChange

cavity imposes a volume change on neighbor cells (shouldnt be used with controlCavityPressure)

property convertClumps

If true the clumps will be temptatively converted into equivalent spheres in the triangulation, and clump members are skipped. Else clumps are ignored and spherical clump members are triangulated as independent bodies.

property crackAreaFactor

Factors the area used for crack geometry computations and capillary force removal inside cracks

property crackCellPoroThreshold

If >0, any cell above this porosity will follow crack logic from the beginning. (~0.35 for pellet imagery)

property crackModelActive

Activates the parallel plate approximation model for facets connected to cohesionBroken edges

property crackedCellTotal

total number of cracked cells

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property debug

Activate debug messages

property decoupleForces

If true, viscous and pressure forces are not imposed on particles. Useful for speeding up simulations in ultra-stiff cohesive materials.

property defTolerance

Cumulated deformation threshold for which retriangulation of pore space is performed. If negative, the triangulation update will occure with a fixed frequency on the basis of FlowEngine::meshUpdateInterval

property desiredPorosity

Correct the cell volumes to reflect this desired porosity (not active by default (0)).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property directlyModifySatFromPoro

if true, changes in porosity are used to directly change porosity. Normally, the water retention curve is taking care of this on its own.

property displacementBasedCracks

fracture criteria will be based on displacement instead of broken bond status

property doInterpolate

Force the interpolation of cell’s info while remeshing. By default, interpolation would be done only for compressible fluids. It can be forced with this flag.

property dt

timestep [s]

edgeSize((PartialSatClayEngineT)arg1) float :

Return the number of interactions.

property elapsedIters

number of mechanical iters since last flow iter.

emulateAction((PartialSatClayEngineT)arg1) None :

get scene and run action (may be used to manipulate an engine outside the timestepping loop).

property eps

roughness defined as a fraction of particles size, giving the minimum distance between particles in the lubrication model.

property epsVolMax

Maximal absolute volumetric strain computed at each iteration. (auto-updated)

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

exportMatrix((PartialSatClayEngineT)arg1[, (str)filename='matrix']) None :

Export system matrix to a file with all entries (even zeros will displayed).

exportTriplets((PartialSatClayEngineT)arg1[, (str)filename='triplets']) None :

Export system matrix to a file with only non-zero entries.

property first

Controls the initialization/update phases

property fixTriUpdatePermInt

If positive, triangulation is fixed and DFNFlow trickPermeability is run according to the interval. Activating this automatically sets FlowEngine::meshUpdateInt and FlowEngine::defTolerance to -1 (never retriangulate).

property fixedAlpha

If true, a constant-sized alpha vertex will be placed exactly above each facet. If false, logic is used to improve cell sizes in concave regions.

property flatThreshold

If >=0, pore volumes below flatThreshold value are blocked from flow calc. Useful for compressible flow involving odd triangulations with some very flat pores.

property fluidBulkModulus

Bulk modulus of fluid (inverse of compressibility) K=-dP*V/dV [Pa]. Flow is compressible if fluidBulkModulus > 0, else incompressible.

property fluidCp

Heat capacity of fluid (for thermalEngine).

fluidForce((PartialSatClayEngineT)arg1, (int)idSph) Vector3 :

Return the fluid force on sphere idSph.

property fluidRho

Density of fluid (for thermalEngine).

property forceConfinement

If true, all the boundary particles are locked in place to simulate perfect constant volume.

property forceMetis

If true, METIS is used for matrix preconditioning, else Cholmod is free to choose the best method (which may be METIS to, depending on the matrix). See nmethods in Cholmod documentation

property fracBasedPointSuctionCalc

if true, the suction per material point is computed based on fraction shared by incident cell.

property fracPorosity

porosity value used for cracked cells

property freeSwelling

if true, boundary forces are computed with pAir pressure only

property freezePorosity

useful for freezing porosity values during stage for reaching initial conditions where volume changes should not impact porosity

property freezeSaturation

if true, saturation will not change in specimen.

property gasPermFirst

Set true each time you want a new gas perm estimate.

getAverageAperture((PartialSatClayEngine)arg1) float :

get the averageaperture.

getAverageSaturation((PartialSatClayEngine)arg1) float :

Get average saturation of entire specimen.

getAverageSuction((PartialSatClayEngine)arg1) float :

Get average suction of entire specimen.

getBoundaryFluidArea((PartialSatClayEngineT)arg1, (int)boundary) float :

Get total fluid area associated with boundary defined by its body id.

getBoundaryFlux((PartialSatClayEngineT)arg1, (int)boundary) float :

Get total flux through boundary defined by its body id.

Note

The flux may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such flux evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

getBoundaryGasFlux((PartialSatClayEngine)arg1, (int)boundary) float :

Get total Gas flux through boundary defined by its body id.

getBoundaryVel((PartialSatClayEngineT)arg1, (int)boundary) object :

Get total avg cell velocity associated with boundary defined by its body id.

getBoundaryVolume((PartialSatClayEngineT)arg1, (int)arg2, (float)boundary) float :

Get total volume flowing through boundary defined by its body id in current timestep dt.

Note

The volume may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such volume evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

property getCHOLMODPerfTimings

Print CHOLMOD build, analyze, and factorize timings

getCavityDensity((PartialSatClayEngineT)arg1) float :

Return the density of cavity fluid.

getCavityFlux((PartialSatClayEngineT)arg1) float :

Return the flux through the edge of the cavity.

getCell((PartialSatClayEngineT)arg1, (float)X, (float)Y, (float)Z) int :

get id of the cell containing (X,Y,Z).

getCellBarycenter((PartialSatClayEngineT)arg1, (int)id) Vector3 :

get barycenter of cell ‘id’.

getCellCenter((PartialSatClayEngineT)arg1, (int)id) Vector3 :

get voronoi center of cell ‘id’.

getCellCracked((PartialSatClayEngine)arg1, (Vector3)pos) bool :

Get cell cracked in position pos[0],pos[1],pos[2].

getCellFlux((PartialSatClayEngineT)arg1, (int)cond) float :

Get influx in cell associated to an imposed P (indexed using ‘cond’).

getCellFluxFromId((PartialSatClayEngineT)arg1, (int)id) float :

Get influx in cell.

getCellGasCenter((PartialSatClayEngine)arg1, (int)id) Vector3 :

Get cell center of gas mesh with id. Can only be used if :yref:`PartialSatEngine::getGasPerm`=True.

getCellGasPImposed((PartialSatClayEngine)arg1, (int)id) bool :

Get pressure condition of gas cell with id. Can only be used if :yref:`PartialSatEngine::getGasPerm`=True.

getCellGasVelocity((PartialSatClayEngine)arg1, (Vector3)pos) object :

Get relative cell gas velocity at position pos[0] pos [1] pos[2]. Can only be used if :yref:`PartialSatEngine::getGasPerm`=True.

getCellGasVolume((PartialSatClayEngine)arg1, (Vector3)id) float :

Get volume of gas cell with id. Can only be used if :yref:`PartialSatEngine::getGasPerm`=True.

getCellInvVoidVolume((PartialSatClayEngineT)arg1, (int)id) float :

get the inverse of the cell volume for cell ‘id’ after pore volumes have been initialized and FlowEngine:iniVoidVolumes = True, or compressibility scheme active with FlowEngine::fluidBulkModulus.

getCellPImposed((PartialSatClayEngineT)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed pressure.

getCellPorosity((PartialSatClayEngine)arg1, (Vector3)pos) float :

Measure cell porosity in position pos[0],pos[1],pos[2].

getCellPressure((PartialSatClayEngineT)arg1, (int)id) float :

get pressure by cell ‘id’. Note: getting pressure at position (x,y,z) might be more usefull, see :yref`FlowEngine::getPorePressure`:

getCellSaturation((PartialSatClayEngine)arg1, (Vector3)pos) float :

Measure cell saturation in position pos[0],pos[1],pos[2]

getCellTImposed((PartialSatClayEngineT)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed temperature.

getCellTemperature((PartialSatClayEngineT)arg1, (int)id) float :

get pressure in cell ‘id’.

getCellVelocity((PartialSatClayEngine)arg1, (Vector3)pos) object :

Get relative cell velocity at position pos[0] pos [1] pos[2].

getCellVolume((PartialSatClayEngine)arg1, (Vector3)pos) float :

Get cell volume in position pos[0],pos[1],pos[2].

getConductivity((PartialSatClayEngineT)arg1, (int)cellId, (int)throat) float :

get conductivity from cell and throat, with throat between 0 and 3 (same ordering as incident cells)

getConstrictions((PartialSatClayEngineT)arg1[, (bool)all=True]) list :

Get the list of constriction radii (inscribed circle) for all finite facets (if all==True) or all facets not incident to a virtual bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres.

getConstrictionsFull((PartialSatClayEngineT)arg1[, (bool)all=True]) list :

Get the list of constrictions (inscribed circle) for all finite facets (if all==True), or all facets not incident to a fictious bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres. The constrictions are returned in the format {{cell1,cell2}{rad,nx,ny,nz}}

getCrackArea((PartialSatClayEngine)arg1) float :

get the total cracked area.

getCrackFabricVector((PartialSatClayEngine)arg1) Vector3 :

get the crack fabric vector.

getCrackVolume((PartialSatClayEngine)arg1) float :

get the total cracked volume.

getDiffusionCoeff((PartialSatClayEngineT)arg1, (int)cellId, (int)throat) float :

get the ratio of throat cross-sectional area and distance between two cells

getEnteredThroatRatio((PartialSatClayEngine)arg1) float :

Get ratio of entered to total cracked cells.

getEquivalentCompressibility((PartialSatClayEngineT)arg1) float :

Return the equivalent compressibility used for modeling air water mixture in cavity.

property getGasPerm

If true, a gas permeability will be extracted during next timestep. This involves building another triangulation with a new conductivity matrix, factorizing the matrix, and solving i.e. this will double computational effort if performed every step.

getIncidentCells((PartialSatClayEngineT)arg1, (int)vertexId) list :

get ids of all cells of which vertexId is a vertex. Typical usage is for getting cells indident to a boundary.

getNeighbors((PartialSatClayEngineT)arg1, (int)arg2) list :

get 4 neigboring cells

getNumCracks((PartialSatClayEngine)arg1) float :

get the number of cracks.

getPorePressure((PartialSatClayEngineT)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getPoreTemperature((PartialSatClayEngineT)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getTotalSpecimenVolume((PartialSatClayEngine)arg1) float :

get the total specimen volume

getVertices((PartialSatClayEngineT)arg1, (int)id) list :

get the vertices of a cell

getWaterVolume((PartialSatClayEngine)arg1) float :

get the total water volume (entered cracks only).

property homogeneousSuctionValue

Will override the pressure solver and set all cells to the user provided value. Meant for testing non transient swelling conditions.

property idOffset

If the bounding walls of the fluid mesh are not walls of the scene (i.e. are not elements of O.bodies), the offset should be set equal to the size of O.bodies. If the bounding walls are bodies of the scene but are not numbered as 0-5 then offset should be the number of bodies comming before the walls. Set offset<0 to get it set equal to O.bodies.size(), it will also update FlowEngine::wallIds.

property ids

Ids list of bodies affected by this PartialEngine.

property ignoredBody

DEPRECATED, USE MASK - Id of a sphere to exclude from the triangulation.)

property imageryFilePath

path to the porosity grid extracted from imagery

imposeCavity((PartialSatClayEngineT)arg1, (Vector3)pos) int :

Cell with location ‘pos’ participates in a cavity (high conductivity and no volume factoring). The index of the condition is returned (for multiple imposed pressures at different points).

imposeFlux((PartialSatClayEngineT)arg1, (Vector3)pos, (float)p) None :

Impose a flux in cell located at ‘pos’ (i.e. add a source term in the flow problem). Outflux positive, influx negative.

imposePressure((PartialSatClayEngineT)arg1, (Vector3)pos, (float)p) int :

Impose pressure in cell of location ‘pos’. The index of the condition is returned (for multiple imposed pressures at different points).

imposePressureFromId((PartialSatClayEngineT)arg1, (int)id, (float)p) int :

Impose pressure in cell of index ‘id’ (after remeshing the same condition will apply for the same location, regardless of what the new cell index is at this location). The index of the condition itself is returned (for multiple imposed pressures at different points).

property iniVoidVolumes

activate the computation of the inverse of the initial void volumes in each cell when pore volumes are initialized.

initializeVolumes((PartialSatClayEngineT)arg1) None :

initialize pore volumes.

insertMicroPores((PartialSatClayEngine)arg1, (float)fracMicroPores) None :

run to inscribe spheres in a desired fraction of existing pores.

property isActivated

Activates Flow Engine

isCellNeighbor((PartialSatClayEngineT)arg1, (int)cell1_ID, (int)cell2_ID) bool :

check if cell1 and cell2 are neigbors.

property kappaWeibullScale

scale of weibull dist, this is the mean correction factor multiplied by meanInitialPorosity

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property lambdaWeibullShape

shape of weibull distribution of the correction factor used for porosity distribution.

property lmbda

Lambda parameter for Van Genuchten model. Free swelling 0.4. If porosity is distributed, this value becomes cell based.

property manualCrackPerm

If >0, it overrides the crack perm calculations (useful for setting cracked cells to extremely low perms to avoid fluid movement)

property mask

If mask defined, only bodies with corresponding groupMask will be affected by this engine. If 0, all bodies will be affected.

property matricSuctionRatio

The ratio of matric:osmotic suction. Facet forces computed for matricSuction fraction only.

property maxKdivKmean

define the max K value (see FlowEngine::clampKValues)

property maxPo

Certain boundary situations where a low volume will develop and interpolate from a cell with high initial porosity leading to Po exponential estimate blowing up.

property maxPoroClamp

max clamp for distribution of porosity. Value over 0.8 messes with water retention curve

property maxPorosity

max porosity found during stochastic poro distribution. used for evolution of porosity

property meanInitialPorosity

if not negative, activates stochastic distribution for porosity. mean value of porosity for specimen

property meanKStat

report the local permeabilities’ correction

property meanPoreSizeDiameter

mean pore size diameter, used for stochastic generation of porosity field

property meshUpdateInterval

Maximum number of timesteps between re-triangulation events (a negative value will never re-triangulate). See also FlowEngine::defTolerance.

metisUsed((PartialSatClayEngineT)arg1) bool :

check wether metis lib is effectively used

property microStructureAdh

Adhesion between microstructure particles

property microStructureE

The amount of crack per pore is updated if calcCrackArea=True

property microStructureNu

The amount of crack per pore is updated if calcCrackArea=True

property microStructurePhi

The amount of crack per pore is updated if calcCrackArea=True

property microStructureRho

The amount of crack per pore is updated if calcCrackArea=True

property minCellVol

Use for avoiding 0 volume cells that will interupt solution of linear system.

property minKdivKmean

define the min K value (see FlowEngine::clampKValues)

property minLambdao

Maybe unnecessary since the lambdao function is a decay exponential for same situation described in maxPo above

property minMicroRadFrac

Used during sphere insertion checks, if inscribed sphere contacts facet it cannot be reduced further than minMicroRadFrac*originalInscribedRadius

property minParticleSwellFactor

If prevents particles from decreasing too far as their saturation decreases.

property minPoroClamp

min clamp for distribution of porosity

property mineralPoro

If >0, all cell with porosity below this threshold will be blocked from flow and any associated particles will be clumped together

property minimumPorosity

value used to limit the allowable minimum porosity for pore volume calculations. Particularly useful if very small volumes are impacting stability

property multithread

Build triangulation and factorize in the background (multi-thread mode)

nCells((PartialSatClayEngineT)arg1) int :

get the total number of finite cells in the triangulation.

nGasCells((PartialSatClayEngine)arg1) int :

Get number of cells in gas mesh. Can only be used if :yref:`PartialSatEngine::getGasPerm`=True.

property nUnsatPerm

n parameter for empirical relative saturation based permeability relationship. Off by default. n=5 in Mokni2016b

normalLubForce((PartialSatClayEngineT)arg1, (int)idSph) Vector3 :

Return the normal lubrication force on sphere idSph.

property normalLubrication

compute normal lubrication force as developped by Brule

normalVect((PartialSatClayEngineT)arg1, (int)idSph) Vector3 :

Return the normal vector between particles.

normalVelocity((PartialSatClayEngineT)arg1, (int)idSph) Vector3 :

Return the normal velocity of the interaction.

property numFactorizeThreads

number of openblas threads in the factorization phase

property numSolveThreads

number of openblas threads in the solve phase.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property onlyFractureExposedCracks

if true, only the exposed cracks have tricked permeability.

onlySpheresInteractions((PartialSatClayEngineT)arg1, (int)interaction) int :

Return the id of the interaction only between spheres.

property pAir

Air pressure for calculation of capillary pressure (Pair - Pwater)

property pZero

The value used for initializing pore pressure. It is useless for incompressible fluid, but important for compressible model.

property partialSatDT

time step used for partial sat engine. If >0, the engine will only activate once every partialSatDT/scene->dt steps. Hydromechanical forces estimated and added as persistant forces to particles during non partial sat time steps. This value is not exact, see PartialSatClayEngine.collectedDT

property partialSatEngine

Activates the partial sat clay engine

property particleSwelling

set false to neglect particle swelling

property permAreaFactor

Factors the area used for representing roughness in cracks that still conduct flux.

property permClamp

If >0, it prevents any permeabilities from increasing beyond this value (useful in case of very close cells

property permeabilityFactor

Permability multiplier (\(m\)): \(m=1\) (default) attempts to predicty the actual hydraulic conductivity using a Poiseuille equation; \(m>0\) multiplies the default values by \(m\); \(m<0\) defines the conductivity independently of particle size and viscosity as if the material was a homogeneous continuum of conductivity \(-m\)

property permeabilityMap

Enable/disable stocking of average permeability scalar in cell infos.

property phiZero

initial porosity of the specimen

property porosity

Porosity computed at each retriangulation (auto-updated)

property pressureForce

compute the pressure field and associated fluid forces. WARNING: turning off means fluid flow is not computed at all.

pressureProfile((PartialSatClayEngineT)arg1, (float)wallUpY, (float)wallDownY) None :

Measure pore pressure in 6 equally-spaced points along the height of the sample

printPorosity((PartialSatClayEngine)arg1[, (str)file='./porosity']) None :

save the porosity of the cell network.

printVertices((PartialSatClayEngineT)arg1) None :

Export vertex positions and types

property pumpTorque

Compute pump torque applied on particles

property relax

Gauss-Seidel relaxation

reloadSolver((PartialSatClayEngine)arg1, (object)arg2) None :

use after reloading a partialSat simulation and before running next step

resetLinearSystem((PartialSatClayEngineT)arg1) None :

trigger rebuild of the linear system while keeping the same triangulation

property resetOriginalParticleValues

use to reset initial volume and radii values for particles.

property resetVolumeSolids

useful if genesis process was used to reach an initial condition. We don’t want the volume changes that occured during geneis to affect porosity evolution.

property residualAperture

residual aperture of induced cracks

savePermeabilityNetworkVTK((PartialSatClayEngine)arg1[, (str)fileName='./VTK']) None :

Save permeability network as connections between cell centers

saveUnsatVtk((PartialSatClayEngine)arg1[, (str)folder='./VTK'[, (bool)withBoundaries=False]]) None :

Save pressure and saturation field in vtk format. Specify a folder name for output. The cells adjacent to the bounding spheres are generated conditionally based on withBoundaries (not compatible with periodic boundaries)

saveVtk((PartialSatClayEngineT)arg1[, (str)folder='./VTK'[, (bool)withBoundaries=False]]) None :

Save pressure field in vtk format. Specify a folder name for output. The cells adjacent to the bounding spheres are generated conditionally based on FlowEngine::withBoundaries (not compatible with periodic boundaries)

setBoundaryNormal((PartialSatClayEngineT)arg1, (int)arg2, (Vector3)arg3) None :

define the unit outward-pointing normal of a boundary (0<=index<=5).

setCellPImposed((PartialSatClayEngineT)arg1, (int)id, (bool)pImposed) None :

make cell ‘id’ assignable with imposed pressure.

setCellPressure((PartialSatClayEngineT)arg1, (int)id, (float)pressure) None :

set pressure in cell ‘id’.

setCellSaturation((PartialSatClayEngine)arg1, (int)id, (float)temperature) None :

set temperature in cell ‘id’.

setCellTImposed((PartialSatClayEngineT)arg1, (int)id, (bool)tImposed) None :

make cell ‘id’ assignable with imposed temperature.

setCellTemperature((PartialSatClayEngineT)arg1, (int)id, (float)temperature) None :

set temperature in cell ‘id’.

setImposedPressure((PartialSatClayEngineT)arg1, (int)cond, (float)p) None :

Set pressure value at the point indexed ‘cond’.

shearLubForce((PartialSatClayEngineT)arg1, (int)idSph) Vector3 :

Return the shear lubrication force on sphere idSph.

shearLubTorque((PartialSatClayEngineT)arg1, (int)idSph) Vector3 :

Return the shear lubrication torque on sphere idSph.

property shearLubrication

compute shear lubrication force as developped by Brule (FIXME: ref.)

shearVelocity((PartialSatClayEngineT)arg1, (int)idSph) Vector3 :

Return the shear velocity of the interaction.

property sineAverage

Pressure value (average) when sinusoidal pressure is applied

property sineMagnitude

Pressure value (amplitude) when sinusoidal pressure is applied (p )

property slipBoundary

Controls friction condition on lateral walls

property stiffness

equivalent contact stiffness used in the lubrication model

property suction

turn just particle suction off (for debug)

surfaceDistanceParticle((PartialSatClayEngineT)arg1, (int)interaction) float :

Return the distance between particles.

surfaceSolidThroatInPore((PartialSatClayEngineT)arg1, (int)cellId, (int)throatIndex) float :

returns solid area in the throat (index 0-3), keeping only that part of the throat in cell.

property swelling

turn just particle swelling off (for debug)

property tZero

The value used for initializing pore temperatures in thermalEngine.

property tempDependentViscosity

boolean to vary viscosity (ultimately cell permeability) with cell temperature. Linear model for viscosity b/w 20-70 degC. If true, kFactor must also be set negative, and becomes the darcy permeability.

property thermalBndCondValue

Imposed temperature boundary condition value for the cells in the triangulation (used with ThermalEngine only).

property thermalEngine

activate thermalEngine within FlowEngine.

property thermalPorosity

>0 means the void volume space will be factored by thermalPorosity for pore internal energy considerations.

property timeDimension

Used to determine stability of system, partialSatEngine computes this value automatically.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property tolerance

Gauss-Seidel tolerance

property totalCracks

total discretely connected cracks.

property totalSpecimenVolume

report the total specimen volume

property totalVolChange

tracks the total volumetric strain that occured in each step

property twistTorque

Compute twist torque applied on particles

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

updateBCs((PartialSatClayEngineT)arg1) None :

Update the boundary condition to reflect changes of boundary pressure (needed typically after changing FlowEngine::bndCondValue). It is not sufficient to reflect changes of the type of boundary condition (FlowEngine::bndCondIsPressure), in such case re-triangulation or at least updating the linear system is needed (see FlowEngine::updateTriangulation and FlowEngine::updateLinearSystem). Conversely, the update is not necessary for changing the value of point-wise imposed pressure (FlowEngine::imposePressure)

property updateTriangulation

If true the medium is retriangulated. Can be switched on to force retriangulation after some events (else it will be true periodicaly based on FlowEngine::defTolerance and FlowEngine::meshUpdateInterval. Of course, it costs CPU time. Note that the new triangulation will start to be effectively used only after one iteration (i.e. O.run(2) gives a result with the new one, O.run(1) does not).

updateVolumes((PartialSatClayEngineT)arg1) None :

update rates of volume change

property useForceForCracks

Cracks are only considered if a normal force of 0 is encountered between two particles.

property useKeq

use the equivalent bulkmodulus for pressure field

property useKozeny

use Kozeny for determining the permeability based on porosity (off by default)

property useOpeningPressure

if true, cracks will be created based on local opening pressure criteria computed by waterSurfaceTension/aperture

property useSolver

Solver to use. 0:Gauss-Seidel, 3: Cholesky factorization (via Eigen3 interface), 4:multicore CPU or GPU accelerated CHOLMOD (without Eigen3), 1-2: undefined.

property viscosity

viscosity of the fluid

property viscousNormalBodyStress

compute normal viscous stress applied on each body

property viscousShear

compute viscous shear terms as developped by Donia Marzougui (FIXME: ref.)

property viscousShearBodyStress

compute shear viscous stress applied on each body

volume((PartialSatClayEngineT)arg1[, (int)id=0]) float :

Returns the volume of Voronoi’s cell of a sphere.

property volumeCorrection

Volume correction factor (not user controlled. auto computed if FlowEngine::desiredPorosity != 0)

property volumeFactor

Factor used for simulating low porosity (for thermal considerations only) in high porosity DEM packings.

property volumes

turn just particle volumes off (for debug)

property wallIds

body ids of the boundaries (default values are ok only if aabbWalls are appended before spheres, i.e. numbered 0,…,5)

property wallThickness

Walls thickness

property waterSurfaceTension

Water surface tension at 20 degC used to determine entry pressure to cracks

property waveAction

Allow sinusoidal pressure condition to simulate ocean waves

property xmax

See FlowEngine::xmin.

property xmin

Index of the boundary \(x_{min}\). This index is not equal the the id of the corresponding body in general, it may be used to access the corresponding attributes (e.g. flow.bndCondValue[flow.xmin], flow.wallId[flow.xmin],…).

property ymax

See FlowEngine::xmin.

property ymin

See FlowEngine::xmin.

property zmax

See FlowEngine::xmin.

property zmin

See FlowEngine::xmin.

class yade.wrapper.PartialSatClayEngineT(inherits PartialEngine Engine Serializable)

A generic engine from wich more specialized engines can inherit. It is defined for the sole purpose of inserting the right data classes CellInfo and VertexInfo in the triangulation, and it should not be used directly. Instead, look for specialized engines, e.g. FlowEngine, PeriodicFlowEngine, or DFNFlowEngine.

OSI((PartialSatClayEngineT)arg1) float :

Return the number of interactions only between spheres.

property alphaBound

if 0, use an alphaBoundary condition where CGAL finds minimum alpha necessary for a single solid object. Any positive value will be used for the alpha. All negative values deactivate the functionality.

property alphaBoundValue

value of alpha constant pressure condition

avFlVelOnSph((PartialSatClayEngineT)arg1, (int)idSph) object :

compute a sphere-centered average fluid velocity

property averageCavityPressure

true means the pressure in the cavity will be averaged each iteration.

averagePressure((PartialSatClayEngineT)arg1) float :

Measure averaged pore pressure in the entire volume, the cells adjacent to the boundaries are ignored if includeBoundaries=False

averageSlicePressure((PartialSatClayEngineT)arg1, (float)posY) float :

Measure slice-averaged pore pressure at height posY

averageVelocity((PartialSatClayEngineT)arg1) Vector3 :

measure the mean velocity in the period

blockCell((PartialSatClayEngineT)arg1, (int)id, (bool)blockPressure) None :

block cell ‘id’. The cell will be excluded from the fluid flow problem and the conductivity of all incident facets will be null. If blockPressure=False, deformation is reflected in the pressure, else it is constantly 0.

property blockHook

Python command to be run when remeshing. Anticipated usage: define blocked cells (see also FlowEngine.blockCell), or apply exotic types of boundary conditions which need to visit the newly built mesh

property bndCondIsPressure

defines the type of boundary condition for each side. True if pressure is imposed, False for no-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondIsTemperature

defines the type of boundary condition for each side of triangulation (used with ThermalEngine only). True if temperature is imposed, False for no heat-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondValue

Imposed value of a boundary condition. Only applies if the boundary condition is imposed pressure, else the imposed flux is always zero presently (may be generalized to non-zero imposed fluxes in the future).

bodyNormalLubStress((PartialSatClayEngineT)arg1, (int)idSph) Matrix3 :

Return the normal lubrication stress on sphere idSph.

bodyShearLubStress((PartialSatClayEngineT)arg1, (int)idSph) Matrix3 :

Return the shear lubrication stress on sphere idSph.

property boundaryPressure

values defining pressure along x-axis for the top surface. See also FlowEngine::boundaryXPos

property boundaryUseMaxMin

If true (default value) bounding sphere is added as function of max/min sphere coord, if false as function of yade wall position

property boundaryVelocity

velocity on top boundary, only change it using FlowEngine::setBoundaryVel

property boundaryXPos

values of the x-coordinate for which pressure is defined. See also FlowEngine::boundaryPressure

property breakControlledRemesh

If true, remesh will occur everytime a break occurs in JCFpmPhys. Designed to increase accuracy and efficiency in hydraulic fracture simulations.

property cavityFactor

Permeability/viscosity for cavity cell neighbors (arbitrarily high to model triangulated fluid filled cavity).

property cavityFluidDensity

>0 means cavity compressibility model considers density changes instead of volume changes.

property cavityFlux

For adding flux to pressuremanaged cavity model (FlowEngine::controlCavityPressure). Negavite influx, postive outflux.

cholmodStats((PartialSatClayEngineT)arg1) None :

get statistics of cholmod solver activity

property clampKValues

If true, clamp local permeabilities in [minKdivKmean,maxKdivKmean]*globalK. This clamping can avoid singular values in the permeability matrix and may reduce numerical errors in the solve phase. It will also hide junk values if they exist, or bias all values in very heterogeneous problems. So, use this with care.

clearImposedFlux((PartialSatClayEngineT)arg1) None :

Clear the list of points with flux imposed.

clearImposedPressure((PartialSatClayEngineT)arg1) None :

Clear the list of points with pressure imposed.

compTessVolumes((PartialSatClayEngineT)arg1) None :

Like TesselationWrapper::computeVolumes()

property controlCavityPressure

use full cavity flux and fluidbulkmodulus to control cavity as dynamic pressure (dirichlet) boundary condition.

property controlCavityVolumeChange

cavity imposes a volume change on neighbor cells (shouldnt be used with controlCavityPressure)

property convertClumps

If true the clumps will be temptatively converted into equivalent spheres in the triangulation, and clump members are skipped. Else clumps are ignored and spherical clump members are triangulated as independent bodies.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property debug

Activate debug messages

property decoupleForces

If true, viscous and pressure forces are not imposed on particles. Useful for speeding up simulations in ultra-stiff cohesive materials.

property defTolerance

Cumulated deformation threshold for which retriangulation of pore space is performed. If negative, the triangulation update will occure with a fixed frequency on the basis of FlowEngine::meshUpdateInterval

property desiredPorosity

Correct the cell volumes to reflect this desired porosity (not active by default (0)).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property doInterpolate

Force the interpolation of cell’s info while remeshing. By default, interpolation would be done only for compressible fluids. It can be forced with this flag.

property dt

timestep [s]

edgeSize((PartialSatClayEngineT)arg1) float :

Return the number of interactions.

emulateAction((PartialSatClayEngineT)arg1) None :

get scene and run action (may be used to manipulate an engine outside the timestepping loop).

property eps

roughness defined as a fraction of particles size, giving the minimum distance between particles in the lubrication model.

property epsVolMax

Maximal absolute volumetric strain computed at each iteration. (auto-updated)

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

exportMatrix((PartialSatClayEngineT)arg1[, (str)filename='matrix']) None :

Export system matrix to a file with all entries (even zeros will displayed).

exportTriplets((PartialSatClayEngineT)arg1[, (str)filename='triplets']) None :

Export system matrix to a file with only non-zero entries.

property first

Controls the initialization/update phases

property fixTriUpdatePermInt

If positive, triangulation is fixed and DFNFlow trickPermeability is run according to the interval. Activating this automatically sets FlowEngine::meshUpdateInt and FlowEngine::defTolerance to -1 (never retriangulate).

property fixedAlpha

If true, a constant-sized alpha vertex will be placed exactly above each facet. If false, logic is used to improve cell sizes in concave regions.

property flatThreshold

If >=0, pore volumes below flatThreshold value are blocked from flow calc. Useful for compressible flow involving odd triangulations with some very flat pores.

property fluidBulkModulus

Bulk modulus of fluid (inverse of compressibility) K=-dP*V/dV [Pa]. Flow is compressible if fluidBulkModulus > 0, else incompressible.

property fluidCp

Heat capacity of fluid (for thermalEngine).

fluidForce((PartialSatClayEngineT)arg1, (int)idSph) Vector3 :

Return the fluid force on sphere idSph.

property fluidRho

Density of fluid (for thermalEngine).

property forceMetis

If true, METIS is used for matrix preconditioning, else Cholmod is free to choose the best method (which may be METIS to, depending on the matrix). See nmethods in Cholmod documentation

getBoundaryFluidArea((PartialSatClayEngineT)arg1, (int)boundary) float :

Get total fluid area associated with boundary defined by its body id.

getBoundaryFlux((PartialSatClayEngineT)arg1, (int)boundary) float :

Get total flux through boundary defined by its body id.

Note

The flux may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such flux evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

getBoundaryVel((PartialSatClayEngineT)arg1, (int)boundary) object :

Get total avg cell velocity associated with boundary defined by its body id.

getBoundaryVolume((PartialSatClayEngineT)arg1, (int)arg2, (float)boundary) float :

Get total volume flowing through boundary defined by its body id in current timestep dt.

Note

The volume may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such volume evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

property getCHOLMODPerfTimings

Print CHOLMOD build, analyze, and factorize timings

getCavityDensity((PartialSatClayEngineT)arg1) float :

Return the density of cavity fluid.

getCavityFlux((PartialSatClayEngineT)arg1) float :

Return the flux through the edge of the cavity.

getCell((PartialSatClayEngineT)arg1, (float)X, (float)Y, (float)Z) int :

get id of the cell containing (X,Y,Z).

getCellBarycenter((PartialSatClayEngineT)arg1, (int)id) Vector3 :

get barycenter of cell ‘id’.

getCellCenter((PartialSatClayEngineT)arg1, (int)id) Vector3 :

get voronoi center of cell ‘id’.

getCellFlux((PartialSatClayEngineT)arg1, (int)cond) float :

Get influx in cell associated to an imposed P (indexed using ‘cond’).

getCellFluxFromId((PartialSatClayEngineT)arg1, (int)id) float :

Get influx in cell.

getCellInvVoidVolume((PartialSatClayEngineT)arg1, (int)id) float :

get the inverse of the cell volume for cell ‘id’ after pore volumes have been initialized and FlowEngine:iniVoidVolumes = True, or compressibility scheme active with FlowEngine::fluidBulkModulus.

getCellPImposed((PartialSatClayEngineT)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed pressure.

getCellPressure((PartialSatClayEngineT)arg1, (int)id) float :

get pressure by cell ‘id’. Note: getting pressure at position (x,y,z) might be more usefull, see :yref`FlowEngine::getPorePressure`:

getCellTImposed((PartialSatClayEngineT)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed temperature.

getCellTemperature((PartialSatClayEngineT)arg1, (int)id) float :

get pressure in cell ‘id’.

getCellVelocity((PartialSatClayEngineT)arg1, (Vector3)pos) object :

Get relative cell velocity at position pos[0] pos [1] pos[2].

getCellVolume((PartialSatClayEngineT)arg1, (Vector3)pos) float :

Get volume of cell at position pos[0] pos [1] pos[2].

getConductivity((PartialSatClayEngineT)arg1, (int)cellId, (int)throat) float :

get conductivity from cell and throat, with throat between 0 and 3 (same ordering as incident cells)

getConstrictions((PartialSatClayEngineT)arg1[, (bool)all=True]) list :

Get the list of constriction radii (inscribed circle) for all finite facets (if all==True) or all facets not incident to a virtual bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres.

getConstrictionsFull((PartialSatClayEngineT)arg1[, (bool)all=True]) list :

Get the list of constrictions (inscribed circle) for all finite facets (if all==True), or all facets not incident to a fictious bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres. The constrictions are returned in the format {{cell1,cell2}{rad,nx,ny,nz}}

getDiffusionCoeff((PartialSatClayEngineT)arg1, (int)cellId, (int)throat) float :

get the ratio of throat cross-sectional area and distance between two cells

getEquivalentCompressibility((PartialSatClayEngineT)arg1) float :

Return the equivalent compressibility used for modeling air water mixture in cavity.

getIncidentCells((PartialSatClayEngineT)arg1, (int)vertexId) list :

get ids of all cells of which vertexId is a vertex. Typical usage is for getting cells indident to a boundary.

getNeighbors((PartialSatClayEngineT)arg1, (int)arg2) list :

get 4 neigboring cells

getPorePressure((PartialSatClayEngineT)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getPoreTemperature((PartialSatClayEngineT)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getVertices((PartialSatClayEngineT)arg1, (int)id) list :

get the vertices of a cell

property idOffset

If the bounding walls of the fluid mesh are not walls of the scene (i.e. are not elements of O.bodies), the offset should be set equal to the size of O.bodies. If the bounding walls are bodies of the scene but are not numbered as 0-5 then offset should be the number of bodies comming before the walls. Set offset<0 to get it set equal to O.bodies.size(), it will also update FlowEngine::wallIds.

property ids

Ids list of bodies affected by this PartialEngine.

property ignoredBody

DEPRECATED, USE MASK - Id of a sphere to exclude from the triangulation.)

imposeCavity((PartialSatClayEngineT)arg1, (Vector3)pos) int :

Cell with location ‘pos’ participates in a cavity (high conductivity and no volume factoring). The index of the condition is returned (for multiple imposed pressures at different points).

imposeFlux((PartialSatClayEngineT)arg1, (Vector3)pos, (float)p) None :

Impose a flux in cell located at ‘pos’ (i.e. add a source term in the flow problem). Outflux positive, influx negative.

imposePressure((PartialSatClayEngineT)arg1, (Vector3)pos, (float)p) int :

Impose pressure in cell of location ‘pos’. The index of the condition is returned (for multiple imposed pressures at different points).

imposePressureFromId((PartialSatClayEngineT)arg1, (int)id, (float)p) int :

Impose pressure in cell of index ‘id’ (after remeshing the same condition will apply for the same location, regardless of what the new cell index is at this location). The index of the condition itself is returned (for multiple imposed pressures at different points).

property iniVoidVolumes

activate the computation of the inverse of the initial void volumes in each cell when pore volumes are initialized.

initializeVolumes((PartialSatClayEngineT)arg1) None :

initialize pore volumes.

property isActivated

Activates Flow Engine

isCellNeighbor((PartialSatClayEngineT)arg1, (int)cell1_ID, (int)cell2_ID) bool :

check if cell1 and cell2 are neigbors.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

If mask defined, only bodies with corresponding groupMask will be affected by this engine. If 0, all bodies will be affected.

property maxKdivKmean

define the max K value (see FlowEngine::clampKValues)

property meanKStat

report the local permeabilities’ correction

property meshUpdateInterval

Maximum number of timesteps between re-triangulation events (a negative value will never re-triangulate). See also FlowEngine::defTolerance.

metisUsed((PartialSatClayEngineT)arg1) bool :

check wether metis lib is effectively used

property minKdivKmean

define the min K value (see FlowEngine::clampKValues)

property minimumPorosity

value used to limit the allowable minimum porosity for pore volume calculations. Particularly useful if very small volumes are impacting stability

property multithread

Build triangulation and factorize in the background (multi-thread mode)

nCells((PartialSatClayEngineT)arg1) int :

get the total number of finite cells in the triangulation.

normalLubForce((PartialSatClayEngineT)arg1, (int)idSph) Vector3 :

Return the normal lubrication force on sphere idSph.

property normalLubrication

compute normal lubrication force as developped by Brule

normalVect((PartialSatClayEngineT)arg1, (int)idSph) Vector3 :

Return the normal vector between particles.

normalVelocity((PartialSatClayEngineT)arg1, (int)idSph) Vector3 :

Return the normal velocity of the interaction.

property numFactorizeThreads

number of openblas threads in the factorization phase

property numSolveThreads

number of openblas threads in the solve phase.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

onlySpheresInteractions((PartialSatClayEngineT)arg1, (int)interaction) int :

Return the id of the interaction only between spheres.

property pZero

The value used for initializing pore pressure. It is useless for incompressible fluid, but important for compressible model.

property permeabilityFactor

Permability multiplier (\(m\)): \(m=1\) (default) attempts to predicty the actual hydraulic conductivity using a Poiseuille equation; \(m>0\) multiplies the default values by \(m\); \(m<0\) defines the conductivity independently of particle size and viscosity as if the material was a homogeneous continuum of conductivity \(-m\)

property permeabilityMap

Enable/disable stocking of average permeability scalar in cell infos.

property phiZero

if >0, considers water aircontent impact on fluid compressibility.

property porosity

Porosity computed at each retriangulation (auto-updated)

property pressureForce

compute the pressure field and associated fluid forces. WARNING: turning off means fluid flow is not computed at all.

pressureProfile((PartialSatClayEngineT)arg1, (float)wallUpY, (float)wallDownY) None :

Measure pore pressure in 6 equally-spaced points along the height of the sample

printVertices((PartialSatClayEngineT)arg1) None :

Export vertex positions and types

property pumpTorque

Compute pump torque applied on particles

property relax

Gauss-Seidel relaxation

resetLinearSystem((PartialSatClayEngineT)arg1) None :

trigger rebuild of the linear system while keeping the same triangulation

saveVtk((PartialSatClayEngineT)arg1[, (str)folder='./VTK'[, (bool)withBoundaries=False]]) None :

Save pressure field in vtk format. Specify a folder name for output. The cells adjacent to the bounding spheres are generated conditionally based on FlowEngine::withBoundaries (not compatible with periodic boundaries)

setBoundaryNormal((PartialSatClayEngineT)arg1, (int)arg2, (Vector3)arg3) None :

define the unit outward-pointing normal of a boundary (0<=index<=5).

setCellPImposed((PartialSatClayEngineT)arg1, (int)id, (bool)pImposed) None :

make cell ‘id’ assignable with imposed pressure.

setCellPressure((PartialSatClayEngineT)arg1, (int)id, (float)pressure) None :

set pressure in cell ‘id’.

setCellTImposed((PartialSatClayEngineT)arg1, (int)id, (bool)tImposed) None :

make cell ‘id’ assignable with imposed temperature.

setCellTemperature((PartialSatClayEngineT)arg1, (int)id, (float)temperature) None :

set temperature in cell ‘id’.

setImposedPressure((PartialSatClayEngineT)arg1, (int)cond, (float)p) None :

Set pressure value at the point indexed ‘cond’.

shearLubForce((PartialSatClayEngineT)arg1, (int)idSph) Vector3 :

Return the shear lubrication force on sphere idSph.

shearLubTorque((PartialSatClayEngineT)arg1, (int)idSph) Vector3 :

Return the shear lubrication torque on sphere idSph.

property shearLubrication

compute shear lubrication force as developped by Brule (FIXME: ref.)

shearVelocity((PartialSatClayEngineT)arg1, (int)idSph) Vector3 :

Return the shear velocity of the interaction.

property sineAverage

Pressure value (average) when sinusoidal pressure is applied

property sineMagnitude

Pressure value (amplitude) when sinusoidal pressure is applied (p )

property slipBoundary

Controls friction condition on lateral walls

property stiffness

equivalent contact stiffness used in the lubrication model

surfaceDistanceParticle((PartialSatClayEngineT)arg1, (int)interaction) float :

Return the distance between particles.

surfaceSolidThroatInPore((PartialSatClayEngineT)arg1, (int)cellId, (int)throatIndex) float :

returns solid area in the throat (index 0-3), keeping only that part of the throat in cell.

property tZero

The value used for initializing pore temperatures in thermalEngine.

property tempDependentViscosity

boolean to vary viscosity (ultimately cell permeability) with cell temperature. Linear model for viscosity b/w 20-70 degC. If true, kFactor must also be set negative, and becomes the darcy permeability.

property thermalBndCondValue

Imposed temperature boundary condition value for the cells in the triangulation (used with ThermalEngine only).

property thermalEngine

activate thermalEngine within FlowEngine.

property thermalPorosity

>0 means the void volume space will be factored by thermalPorosity for pore internal energy considerations.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property tolerance

Gauss-Seidel tolerance

property twistTorque

Compute twist torque applied on particles

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

updateBCs((PartialSatClayEngineT)arg1) None :

Update the boundary condition to reflect changes of boundary pressure (needed typically after changing FlowEngine::bndCondValue). It is not sufficient to reflect changes of the type of boundary condition (FlowEngine::bndCondIsPressure), in such case re-triangulation or at least updating the linear system is needed (see FlowEngine::updateTriangulation and FlowEngine::updateLinearSystem). Conversely, the update is not necessary for changing the value of point-wise imposed pressure (FlowEngine::imposePressure)

property updateTriangulation

If true the medium is retriangulated. Can be switched on to force retriangulation after some events (else it will be true periodicaly based on FlowEngine::defTolerance and FlowEngine::meshUpdateInterval. Of course, it costs CPU time. Note that the new triangulation will start to be effectively used only after one iteration (i.e. O.run(2) gives a result with the new one, O.run(1) does not).

updateVolumes((PartialSatClayEngineT)arg1) None :

update rates of volume change

property useSolver

Solver to use. 0:Gauss-Seidel, 3: Cholesky factorization (via Eigen3 interface), 4:multicore CPU or GPU accelerated CHOLMOD (without Eigen3), 1-2: undefined.

property viscosity

viscosity of the fluid

property viscousNormalBodyStress

compute normal viscous stress applied on each body

property viscousShear

compute viscous shear terms as developped by Donia Marzougui (FIXME: ref.)

property viscousShearBodyStress

compute shear viscous stress applied on each body

volume((PartialSatClayEngineT)arg1[, (int)id=0]) float :

Returns the volume of Voronoi’s cell of a sphere.

property volumeCorrection

Volume correction factor (not user controlled. auto computed if FlowEngine::desiredPorosity != 0)

property volumeFactor

Factor used for simulating low porosity (for thermal considerations only) in high porosity DEM packings.

property wallIds

body ids of the boundaries (default values are ok only if aabbWalls are appended before spheres, i.e. numbered 0,…,5)

property wallThickness

Walls thickness

property waveAction

Allow sinusoidal pressure condition to simulate ocean waves

property xmax

See FlowEngine::xmin.

property xmin

Index of the boundary \(x_{min}\). This index is not equal the the id of the corresponding body in general, it may be used to access the corresponding attributes (e.g. flow.bndCondValue[flow.xmin], flow.wallId[flow.xmin],…).

property ymax

See FlowEngine::xmin.

property ymin

See FlowEngine::xmin.

property zmax

See FlowEngine::xmin.

property zmin

See FlowEngine::xmin.

class yade.wrapper.PeriodicFlowEngine(inherits FlowEngine_PeriodicInfo PartialEngine Engine Serializable)

A variant of FlowEngine implementing periodic boundary conditions. The API is very similar.

OSI((FlowEngine_PeriodicInfo)arg1) float :

Return the number of interactions only between spheres.

property alphaBound

if 0, use an alphaBoundary condition where CGAL finds minimum alpha necessary for a single solid object. Any positive value will be used for the alpha. All negative values deactivate the functionality.

property alphaBoundValue

value of alpha constant pressure condition

avFlVelOnSph((FlowEngine_PeriodicInfo)arg1, (int)idSph) object :

compute a sphere-centered average fluid velocity

property averageCavityPressure

true means the pressure in the cavity will be averaged each iteration.

averagePressure((FlowEngine_PeriodicInfo)arg1) float :

Measure averaged pore pressure in the entire volume, the cells adjacent to the boundaries are ignored if includeBoundaries=False

averageSlicePressure((FlowEngine_PeriodicInfo)arg1, (float)posY) float :

Measure slice-averaged pore pressure at height posY

averageVelocity((FlowEngine_PeriodicInfo)arg1) Vector3 :

measure the mean velocity in the period

blockCell((FlowEngine_PeriodicInfo)arg1, (int)id, (bool)blockPressure) None :

block cell ‘id’. The cell will be excluded from the fluid flow problem and the conductivity of all incident facets will be null. If blockPressure=False, deformation is reflected in the pressure, else it is constantly 0.

property blockHook

Python command to be run when remeshing. Anticipated usage: define blocked cells (see also FlowEngine.blockCell), or apply exotic types of boundary conditions which need to visit the newly built mesh

property bndCondIsPressure

defines the type of boundary condition for each side. True if pressure is imposed, False for no-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondIsTemperature

defines the type of boundary condition for each side of triangulation (used with ThermalEngine only). True if temperature is imposed, False for no heat-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondValue

Imposed value of a boundary condition. Only applies if the boundary condition is imposed pressure, else the imposed flux is always zero presently (may be generalized to non-zero imposed fluxes in the future).

bodyNormalLubStress((FlowEngine_PeriodicInfo)arg1, (int)idSph) Matrix3 :

Return the normal lubrication stress on sphere idSph.

bodyShearLubStress((FlowEngine_PeriodicInfo)arg1, (int)idSph) Matrix3 :

Return the shear lubrication stress on sphere idSph.

property boundaryPressure

values defining pressure along x-axis for the top surface. See also FlowEngine::boundaryXPos

property boundaryUseMaxMin

If true (default value) bounding sphere is added as function of max/min sphere coord, if false as function of yade wall position

property boundaryVelocity

velocity on top boundary, only change it using FlowEngine::setBoundaryVel

property boundaryXPos

values of the x-coordinate for which pressure is defined. See also FlowEngine::boundaryPressure

property breakControlledRemesh

If true, remesh will occur everytime a break occurs in JCFpmPhys. Designed to increase accuracy and efficiency in hydraulic fracture simulations.

property cavityFactor

Permeability/viscosity for cavity cell neighbors (arbitrarily high to model triangulated fluid filled cavity).

property cavityFluidDensity

>0 means cavity compressibility model considers density changes instead of volume changes.

property cavityFlux

For adding flux to pressuremanaged cavity model (FlowEngine::controlCavityPressure). Negavite influx, postive outflux.

cholmodStats((FlowEngine_PeriodicInfo)arg1) None :

get statistics of cholmod solver activity

property clampKValues

If true, clamp local permeabilities in [minKdivKmean,maxKdivKmean]*globalK. This clamping can avoid singular values in the permeability matrix and may reduce numerical errors in the solve phase. It will also hide junk values if they exist, or bias all values in very heterogeneous problems. So, use this with care.

clearImposedFlux((FlowEngine_PeriodicInfo)arg1) None :

Clear the list of points with flux imposed.

clearImposedPressure((FlowEngine_PeriodicInfo)arg1) None :

Clear the list of points with pressure imposed.

compTessVolumes((FlowEngine_PeriodicInfo)arg1) None :

Like TesselationWrapper::computeVolumes()

property controlCavityPressure

use full cavity flux and fluidbulkmodulus to control cavity as dynamic pressure (dirichlet) boundary condition.

property controlCavityVolumeChange

cavity imposes a volume change on neighbor cells (shouldnt be used with controlCavityPressure)

property convertClumps

If true the clumps will be temptatively converted into equivalent spheres in the triangulation, and clump members are skipped. Else clumps are ignored and spherical clump members are triangulated as independent bodies.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property debug

Activate debug messages

property decoupleForces

If true, viscous and pressure forces are not imposed on particles. Useful for speeding up simulations in ultra-stiff cohesive materials.

property defTolerance

Cumulated deformation threshold for which retriangulation of pore space is performed. If negative, the triangulation update will occure with a fixed frequency on the basis of FlowEngine::meshUpdateInterval

property desiredPorosity

Correct the cell volumes to reflect this desired porosity (not active by default (0)).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property doInterpolate

Force the interpolation of cell’s info while remeshing. By default, interpolation would be done only for compressible fluids. It can be forced with this flag.

property dt

timestep [s]

property duplicateThreshold

distance from cell borders that will triger periodic duplication in the triangulation (auto-updated)

edgeSize((FlowEngine_PeriodicInfo)arg1) float :

Return the number of interactions.

emulateAction((FlowEngine_PeriodicInfo)arg1) None :

get scene and run action (may be used to manipulate an engine outside the timestepping loop).

property eps

roughness defined as a fraction of particles size, giving the minimum distance between particles in the lubrication model.

property epsVolMax

Maximal absolute volumetric strain computed at each iteration. (auto-updated)

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

exportMatrix((FlowEngine_PeriodicInfo)arg1[, (str)filename='matrix']) None :

Export system matrix to a file with all entries (even zeros will displayed).

exportTriplets((FlowEngine_PeriodicInfo)arg1[, (str)filename='triplets']) None :

Export system matrix to a file with only non-zero entries.

property first

Controls the initialization/update phases

property fixTriUpdatePermInt

If positive, triangulation is fixed and DFNFlow trickPermeability is run according to the interval. Activating this automatically sets FlowEngine::meshUpdateInt and FlowEngine::defTolerance to -1 (never retriangulate).

property fixedAlpha

If true, a constant-sized alpha vertex will be placed exactly above each facet. If false, logic is used to improve cell sizes in concave regions.

property flatThreshold

If >=0, pore volumes below flatThreshold value are blocked from flow calc. Useful for compressible flow involving odd triangulations with some very flat pores.

property fluidBulkModulus

Bulk modulus of fluid (inverse of compressibility) K=-dP*V/dV [Pa]. Flow is compressible if fluidBulkModulus > 0, else incompressible.

property fluidCp

Heat capacity of fluid (for thermalEngine).

fluidForce((FlowEngine_PeriodicInfo)arg1, (int)idSph) Vector3 :

Return the fluid force on sphere idSph.

property fluidRho

Density of fluid (for thermalEngine).

property forceMetis

If true, METIS is used for matrix preconditioning, else Cholmod is free to choose the best method (which may be METIS to, depending on the matrix). See nmethods in Cholmod documentation

getBoundaryFluidArea((FlowEngine_PeriodicInfo)arg1, (int)boundary) float :

Get total fluid area associated with boundary defined by its body id.

getBoundaryFlux((FlowEngine_PeriodicInfo)arg1, (int)boundary) float :

Get total flux through boundary defined by its body id.

Note

The flux may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such flux evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

getBoundaryVel((FlowEngine_PeriodicInfo)arg1, (int)boundary) object :

Get total avg cell velocity associated with boundary defined by its body id.

getBoundaryVolume((FlowEngine_PeriodicInfo)arg1, (int)arg2, (float)boundary) float :

Get total volume flowing through boundary defined by its body id in current timestep dt.

Note

The volume may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such volume evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

property getCHOLMODPerfTimings

Print CHOLMOD build, analyze, and factorize timings

getCavityDensity((FlowEngine_PeriodicInfo)arg1) float :

Return the density of cavity fluid.

getCavityFlux((FlowEngine_PeriodicInfo)arg1) float :

Return the flux through the edge of the cavity.

getCell((FlowEngine_PeriodicInfo)arg1, (float)X, (float)Y, (float)Z) int :

get id of the cell containing (X,Y,Z).

getCellBarycenter((FlowEngine_PeriodicInfo)arg1, (int)id) Vector3 :

get barycenter of cell ‘id’.

getCellCenter((FlowEngine_PeriodicInfo)arg1, (int)id) Vector3 :

get voronoi center of cell ‘id’.

getCellFlux((FlowEngine_PeriodicInfo)arg1, (int)cond) float :

Get influx in cell associated to an imposed P (indexed using ‘cond’).

getCellFluxFromId((FlowEngine_PeriodicInfo)arg1, (int)id) float :

Get influx in cell.

getCellInvVoidVolume((FlowEngine_PeriodicInfo)arg1, (int)id) float :

get the inverse of the cell volume for cell ‘id’ after pore volumes have been initialized and FlowEngine:iniVoidVolumes = True, or compressibility scheme active with FlowEngine::fluidBulkModulus.

getCellPImposed((FlowEngine_PeriodicInfo)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed pressure.

getCellPressure((FlowEngine_PeriodicInfo)arg1, (int)id) float :

get pressure by cell ‘id’. Note: getting pressure at position (x,y,z) might be more usefull, see :yref`FlowEngine::getPorePressure`:

getCellTImposed((FlowEngine_PeriodicInfo)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed temperature.

getCellTemperature((FlowEngine_PeriodicInfo)arg1, (int)id) float :

get pressure in cell ‘id’.

getCellVelocity((FlowEngine_PeriodicInfo)arg1, (Vector3)pos) object :

Get relative cell velocity at position pos[0] pos [1] pos[2].

getCellVolume((FlowEngine_PeriodicInfo)arg1, (Vector3)pos) float :

Get volume of cell at position pos[0] pos [1] pos[2].

getConductivity((FlowEngine_PeriodicInfo)arg1, (int)cellId, (int)throat) float :

get conductivity from cell and throat, with throat between 0 and 3 (same ordering as incident cells)

getConstrictions((FlowEngine_PeriodicInfo)arg1[, (bool)all=True]) list :

Get the list of constriction radii (inscribed circle) for all finite facets (if all==True) or all facets not incident to a virtual bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres.

getConstrictionsFull((FlowEngine_PeriodicInfo)arg1[, (bool)all=True]) list :

Get the list of constrictions (inscribed circle) for all finite facets (if all==True), or all facets not incident to a fictious bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres. The constrictions are returned in the format {{cell1,cell2}{rad,nx,ny,nz}}

getDiffusionCoeff((FlowEngine_PeriodicInfo)arg1, (int)cellId, (int)throat) float :

get the ratio of throat cross-sectional area and distance between two cells

getEquivalentCompressibility((FlowEngine_PeriodicInfo)arg1) float :

Return the equivalent compressibility used for modeling air water mixture in cavity.

getIncidentCells((FlowEngine_PeriodicInfo)arg1, (int)vertexId) list :

get ids of all cells of which vertexId is a vertex. Typical usage is for getting cells indident to a boundary.

getNeighbors((FlowEngine_PeriodicInfo)arg1, (int)arg2) list :

get 4 neigboring cells

getPorePressure((FlowEngine_PeriodicInfo)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getPoreTemperature((FlowEngine_PeriodicInfo)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getVertices((FlowEngine_PeriodicInfo)arg1, (int)id) list :

get the vertices of a cell

property gradP

Macroscopic pressure gradient

property idOffset

If the bounding walls of the fluid mesh are not walls of the scene (i.e. are not elements of O.bodies), the offset should be set equal to the size of O.bodies. If the bounding walls are bodies of the scene but are not numbered as 0-5 then offset should be the number of bodies comming before the walls. Set offset<0 to get it set equal to O.bodies.size(), it will also update FlowEngine::wallIds.

property ids

Ids list of bodies affected by this PartialEngine.

property ignoredBody

DEPRECATED, USE MASK - Id of a sphere to exclude from the triangulation.)

imposeCavity((FlowEngine_PeriodicInfo)arg1, (Vector3)pos) int :

Cell with location ‘pos’ participates in a cavity (high conductivity and no volume factoring). The index of the condition is returned (for multiple imposed pressures at different points).

imposeFlux((FlowEngine_PeriodicInfo)arg1, (Vector3)pos, (float)p) None :

Impose a flux in cell located at ‘pos’ (i.e. add a source term in the flow problem). Outflux positive, influx negative.

imposePressure((FlowEngine_PeriodicInfo)arg1, (Vector3)pos, (float)p) int :

Impose pressure in cell of location ‘pos’. The index of the condition is returned (for multiple imposed pressures at different points).

imposePressureFromId((FlowEngine_PeriodicInfo)arg1, (int)id, (float)p) int :

Impose pressure in cell of index ‘id’ (after remeshing the same condition will apply for the same location, regardless of what the new cell index is at this location). The index of the condition itself is returned (for multiple imposed pressures at different points).

property iniVoidVolumes

activate the computation of the inverse of the initial void volumes in each cell when pore volumes are initialized.

initializeVolumes((FlowEngine_PeriodicInfo)arg1) None :

initialize pore volumes.

property isActivated

Activates Flow Engine

isCellNeighbor((FlowEngine_PeriodicInfo)arg1, (int)cell1_ID, (int)cell2_ID) bool :

check if cell1 and cell2 are neigbors.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

If mask defined, only bodies with corresponding groupMask will be affected by this engine. If 0, all bodies will be affected.

property maxKdivKmean

define the max K value (see FlowEngine::clampKValues)

property meanKStat

report the local permeabilities’ correction

property meshUpdateInterval

Maximum number of timesteps between re-triangulation events (a negative value will never re-triangulate). See also FlowEngine::defTolerance.

metisUsed((FlowEngine_PeriodicInfo)arg1) bool :

check wether metis lib is effectively used

property minKdivKmean

define the min K value (see FlowEngine::clampKValues)

property minimumPorosity

value used to limit the allowable minimum porosity for pore volume calculations. Particularly useful if very small volumes are impacting stability

property multithread

Build triangulation and factorize in the background (multi-thread mode)

nCells((FlowEngine_PeriodicInfo)arg1) int :

get the total number of finite cells in the triangulation.

normalLubForce((FlowEngine_PeriodicInfo)arg1, (int)idSph) Vector3 :

Return the normal lubrication force on sphere idSph.

property normalLubrication

compute normal lubrication force as developped by Brule

normalVect((FlowEngine_PeriodicInfo)arg1, (int)idSph) Vector3 :

Return the normal vector between particles.

normalVelocity((FlowEngine_PeriodicInfo)arg1, (int)idSph) Vector3 :

Return the normal velocity of the interaction.

property numFactorizeThreads

number of openblas threads in the factorization phase

property numSolveThreads

number of openblas threads in the solve phase.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

onlySpheresInteractions((FlowEngine_PeriodicInfo)arg1, (int)interaction) int :

Return the id of the interaction only between spheres.

property pZero

The value used for initializing pore pressure. It is useless for incompressible fluid, but important for compressible model.

property permeabilityFactor

Permability multiplier (\(m\)): \(m=1\) (default) attempts to predicty the actual hydraulic conductivity using a Poiseuille equation; \(m>0\) multiplies the default values by \(m\); \(m<0\) defines the conductivity independently of particle size and viscosity as if the material was a homogeneous continuum of conductivity \(-m\)

property permeabilityMap

Enable/disable stocking of average permeability scalar in cell infos.

property phiZero

if >0, considers water aircontent impact on fluid compressibility.

property porosity

Porosity computed at each retriangulation (auto-updated)

property pressureForce

compute the pressure field and associated fluid forces. WARNING: turning off means fluid flow is not computed at all.

pressureProfile((FlowEngine_PeriodicInfo)arg1, (float)wallUpY, (float)wallDownY) None :

Measure pore pressure in 6 equally-spaced points along the height of the sample

printVertices((FlowEngine_PeriodicInfo)arg1) None :

Export vertex positions and types

property pumpTorque

Compute pump torque applied on particles

property relax

Gauss-Seidel relaxation

resetLinearSystem((FlowEngine_PeriodicInfo)arg1) None :

trigger rebuild of the linear system while keeping the same triangulation

saveVtk((FlowEngine_PeriodicInfo)arg1[, (str)folder='./VTK'[, (bool)withBoundaries=False]]) None :

Save pressure field in vtk format. Specify a folder name for output. The cells adjacent to the bounding spheres are generated conditionally based on FlowEngine::withBoundaries (not compatible with periodic boundaries)

setBoundaryNormal((FlowEngine_PeriodicInfo)arg1, (int)arg2, (Vector3)arg3) None :

define the unit outward-pointing normal of a boundary (0<=index<=5).

setCellPImposed((FlowEngine_PeriodicInfo)arg1, (int)id, (bool)pImposed) None :

make cell ‘id’ assignable with imposed pressure.

setCellPressure((FlowEngine_PeriodicInfo)arg1, (int)id, (float)pressure) None :

set pressure in cell ‘id’.

setCellTImposed((FlowEngine_PeriodicInfo)arg1, (int)id, (bool)tImposed) None :

make cell ‘id’ assignable with imposed temperature.

setCellTemperature((FlowEngine_PeriodicInfo)arg1, (int)id, (float)temperature) None :

set temperature in cell ‘id’.

setImposedPressure((FlowEngine_PeriodicInfo)arg1, (int)cond, (float)p) None :

Set pressure value at the point indexed ‘cond’.

shearLubForce((FlowEngine_PeriodicInfo)arg1, (int)idSph) Vector3 :

Return the shear lubrication force on sphere idSph.

shearLubTorque((FlowEngine_PeriodicInfo)arg1, (int)idSph) Vector3 :

Return the shear lubrication torque on sphere idSph.

property shearLubrication

compute shear lubrication force as developped by Brule (FIXME: ref.)

shearVelocity((FlowEngine_PeriodicInfo)arg1, (int)idSph) Vector3 :

Return the shear velocity of the interaction.

property sineAverage

Pressure value (average) when sinusoidal pressure is applied

property sineMagnitude

Pressure value (amplitude) when sinusoidal pressure is applied (p )

property slipBoundary

Controls friction condition on lateral walls

property stiffness

equivalent contact stiffness used in the lubrication model

surfaceDistanceParticle((FlowEngine_PeriodicInfo)arg1, (int)interaction) float :

Return the distance between particles.

surfaceSolidThroatInPore((FlowEngine_PeriodicInfo)arg1, (int)cellId, (int)throatIndex) float :

returns solid area in the throat (index 0-3), keeping only that part of the throat in cell.

property tZero

The value used for initializing pore temperatures in thermalEngine.

property tempDependentViscosity

boolean to vary viscosity (ultimately cell permeability) with cell temperature. Linear model for viscosity b/w 20-70 degC. If true, kFactor must also be set negative, and becomes the darcy permeability.

property thermalBndCondValue

Imposed temperature boundary condition value for the cells in the triangulation (used with ThermalEngine only).

property thermalEngine

activate thermalEngine within FlowEngine.

property thermalPorosity

>0 means the void volume space will be factored by thermalPorosity for pore internal energy considerations.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property tolerance

Gauss-Seidel tolerance

property twistTorque

Compute twist torque applied on particles

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

updateBCs((FlowEngine_PeriodicInfo)arg1) None :

Update the boundary condition to reflect changes of boundary pressure (needed typically after changing FlowEngine::bndCondValue). It is not sufficient to reflect changes of the type of boundary condition (FlowEngine::bndCondIsPressure), in such case re-triangulation or at least updating the linear system is needed (see FlowEngine::updateTriangulation and FlowEngine::updateLinearSystem). Conversely, the update is not necessary for changing the value of point-wise imposed pressure (FlowEngine::imposePressure)

property updateTriangulation

If true the medium is retriangulated. Can be switched on to force retriangulation after some events (else it will be true periodicaly based on FlowEngine::defTolerance and FlowEngine::meshUpdateInterval. Of course, it costs CPU time. Note that the new triangulation will start to be effectively used only after one iteration (i.e. O.run(2) gives a result with the new one, O.run(1) does not).

updateVolumes((FlowEngine_PeriodicInfo)arg1) None :

update rates of volume change

property useSolver

Solver to use. 0:Gauss-Seidel, 3: Cholesky factorization (via Eigen3 interface), 4:multicore CPU or GPU accelerated CHOLMOD (without Eigen3), 1-2: undefined.

property viscosity

viscosity of the fluid

property viscousNormalBodyStress

compute normal viscous stress applied on each body

property viscousShear

compute viscous shear terms as developped by Donia Marzougui (FIXME: ref.)

property viscousShearBodyStress

compute shear viscous stress applied on each body

volume((FlowEngine_PeriodicInfo)arg1[, (int)id=0]) float :

Returns the volume of Voronoi’s cell of a sphere.

property volumeCorrection

Volume correction factor (not user controlled. auto computed if FlowEngine::desiredPorosity != 0)

property volumeFactor

Factor used for simulating low porosity (for thermal considerations only) in high porosity DEM packings.

property wallIds

body ids of the boundaries (default values are ok only if aabbWalls are appended before spheres, i.e. numbered 0,…,5)

property wallThickness

Walls thickness

property waveAction

Allow sinusoidal pressure condition to simulate ocean waves

property xmax

See FlowEngine::xmin.

property xmin

Index of the boundary \(x_{min}\). This index is not equal the the id of the corresponding body in general, it may be used to access the corresponding attributes (e.g. flow.bndCondValue[flow.xmin], flow.wallId[flow.xmin],…).

property ymax

See FlowEngine::xmin.

property ymin

See FlowEngine::xmin.

property zmax

See FlowEngine::xmin.

property zmin

See FlowEngine::xmin.

class yade.wrapper.RadialForceEngine(inherits PartialEngine Engine Serializable)

Apply force of given magnitude directed away from spatial axis.

property axisDir

Axis direction (normalized automatically)

property axisPt

Point on axis

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property fNorm

Applied force magnitude

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.RotationEngine(inherits KinematicEngine PartialEngine Engine Serializable)

Engine applying rotation (by setting angular velocity) to subscribed bodies. If rotateAroundZero is set, then each body is also displaced around zeroPoint.

property angularVelocity

Angular velocity. [rad/s]

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property rotateAroundZero

If True, bodies will not rotate around their centroids, but rather around zeroPoint.

property rotationAxis

Axis of rotation (direction); will be normalized automatically.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property zeroPoint

Point around which bodies will rotate if rotateAroundZero is True

class yade.wrapper.ServoPIDController(inherits TranslationEngine KinematicEngine PartialEngine Engine Serializable)

PIDController servo-engine for applying prescribed force on bodies. http://en.wikipedia.org/wiki/PID_controller

property axis

Unit vector along which apply the velocity [-]

property curVel

Current applied velocity [m/s]

property current

Current value for the controller [N]

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property errorCur

Current error [N]

property errorPrev

Previous error [N]

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property iTerm

Integral term [N]

property ids

Ids list of bodies affected by this PartialEngine.

property iterPeriod

Periodicity criterion of velocity correlation [-]

property iterPrevStart

Previous iteration of velocity correlation [-]

property kD

Derivative gain/coefficient for the PID-controller [-]

property kI

Integral gain/coefficient for the PID-controller [-]

property kP

Proportional gain/coefficient for the PID-controller [-]

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property maxVelocity

Velocity [m/s]

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property target

Target value for the controller [N]

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property translationAxis

Direction of imposed translation [Vector3]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property velocity

Scalar value of the imposed velocity [m/s]. Imposed vector velocity is velocity * axis

class yade.wrapper.StepDisplacer(inherits PartialEngine Engine Serializable)

Apply generalized displacement (displacement or rotation) stepwise on subscribed bodies. Could be used for purposes of contact law tests (by moving one sphere compared to another), but in this case, see rather LawTester

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mov

Linear displacement step to be applied per iteration, by addition to State.pos.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property rot

Rotation step to be applied per iteration (via rotation composition with State.ori).

property setVelocities

If false, positions and orientations are directly updated, without changing the speeds of concerned bodies. If true, only velocity and angularVelocity are modified. In this second case integrator is supposed to be used, so that, thanks to this Engine, the bodies will have the prescribed jump over one iteration (dt).

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.ThermalEngine(inherits PartialEngine Engine Serializable)

An engine typically used in combination with FlowEngine to simulate thermal-hydraulic-mechanical processes. Framework description and demonstration presented within the following paper [Caulk2019a] :Caulk, R.A. and Chareyre, B. (2019) An open framework for the simulation of thermal-hydraulic-mechanical processes in discrete element systems. Thermal Process Engineering: Proceedings of DEM8 International Conference for Discrete Element Methods, Enschede Netherlands, July 2019.

property advection

Activates advection

property bndCondIsTemperature

defines the type of boundary condition for each side of particle packing. True if temperature is imposed, False for no heat-flux. Indices can be retrieved with FlowEngine::xmin and friends.

property boundarySet

set false to change boundary conditions

checkThermal((ThermalEngine)arg1) bool :

Check if all bodies have thermal states.

property conduction

Activates conduction

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property debug

debugging flags

property delT

Allows user to apply a delT to solids and observe macro thermal expansion. Resets to 0 after one conduction step.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property flowTempBoundarySet

set false to change boundary conditions

property fluidBeta

volumetric temperature coefficient m^3/m^3C, default water, <= 0 deactivates

property fluidBulkModulus

If > 0, thermalEngine uses this value instead of flow.fluidBulkModulus.

property fluidConduction

Activates conduction within fluid

property fluidConductionAreaFactor

Factor for the porethroat area (used for fluid-fluid conduction model)

property fluidK

Thermal conductivity of the fluid.

property fluidThermoMech

Activates thermoMech

getConductionIterPeriod((ThermalEngine)arg1) int :

let user check estimated conductionIterPeriod .

getMaxTimeStep((ThermalEngine)arg1) float :

let user check estimated maxTimeStep.

getThermalDT((ThermalEngine)arg1) float :

let user check estimated thermalDT .

property ids

Ids list of bodies affected by this PartialEngine.

property ignoreFictiousConduction

Allows user to ignore conduction between fictious cells and particles. Mainly for debugging purposes.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property lenBodies

cache the number of thermal bodies to perform checks and raise warnings if newly inserted bodies are not thermal

property letThermalRunFlowForceUpdates

If true, Thermal will run force updates according to new pressures instead of FlowEngine. only useful if useVolumeChange=false.

makeThermal((ThermalEngine)arg1) None :

Assign thermal states to all bodies.

property minimumFluidCondDist

Useful for maintaining stability despite poor external triangulations involving flat tetrahedrals. Consider setting to minimum particle diameter to keep scale.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property particleAlpha

Particle volumetric thermal expansion coeffcient

property particleCp

Particle thermal heat capacity (J/(kgK)

property particleDensity

If > 0, this value will override material density for thermodynamic calculations (useful for quasi-static simulations involving unphysical particle densities)

property particleK

Particle thermal conductivity (W/(mK)

property particleT0

Initial temperature of particles

property porosityFactor

If >0, factors the fluid thermal expansion. Useful for simulating low porosity matrices.

setReynoldsNumbers((ThermalEngine)arg1) None :

update the cell reynolds numbers manually (computationally expensive)

property solidThermoMech

Activates thermoMech

property tempDependentFluidBeta

If true, fluid volumetric thermal expansion coefficient, ThermalEngine::fluidBeta, is temperature dependent (linear model between 20-70 degC)

property thermalBndCondValue

Imposed temperature boundary condition for the particles.

property thermalBndFlux

Flux through thermal boundary.

property thermoMech

Activates thermoMech

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property tsSafetyFactor

Allow user to control the timstep estimate with a safety factor. Default 0.8. If <= 0, thermal timestep is equal to DEM

property unboundCavityBodies

automatically unbound bodies touching only cavity cells.

property uniformReynolds

Control reynolds number in all cells (mostly debugging purposes).

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property useHertzMethod

flag to use hertzmethod for thermal conductivity area calc

property useKernMethod

flag to use Kern method for thermal conductivity area calc

class yade.wrapper.TimeAverager(inherits PartialEngine Engine Serializable)

Average data over time for specific sphere identified by ids. Data are position, velocity, angular velocity, global resultant force and torque, resultant force and torque computed from contacts only and contact force field (see description below). The data must be first initialized with its instantaneous value by running the initialization method. Then averaged values are updated at every time steps with a moving average algorythm, until the initialization method is run again.

property computeContactForceField

Wether to compute and average contact force field at the surface of the particles. The contact force field is obtained by ditributing the contact forces on a grid at the surface of the sphere. The contact forces are spread on each point of the grid, according to the distance between the contact point and the grid point. The algorythm uses a gaussian kernel to smooth the field. If computeContactForceField is true, grid and sigma parameters must be filled in. This can significantly increase the computation time for dense grid or high number of particles.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

getAngVel((TimeAverager)arg1, (int)arg2) Vector3 :

Get averaged angular velocity of particle since last initialization

getContactForce((TimeAverager)arg1, (int)arg2) Vector3 :

Get averaged resultant force computed from contact forces on particle since last initialization

getContactForceField((TimeAverager)arg1, (int)arg2) object :

Get averaged contact force field at the surface of the particle since last initialization

getContactTorque((TimeAverager)arg1, (int)arg2) Vector3 :

Get averaged resultant torque computed from contact forces on particle since last initialization

getForce((TimeAverager)arg1, (int)arg2) Vector3 :

Get averaged resultant force of particle since last initialization

getNbContact((TimeAverager)arg1, (int)arg2) float :

Get averaged number of contact points on particle since last initialization

getPos((TimeAverager)arg1, (int)arg2) Vector3 :

Get averaged position of particle since last initialization

getTorque((TimeAverager)arg1, (int)arg2) Vector3 :

Get averaged resultant torque of particle since last initialization

getVel((TimeAverager)arg1, (int)arg2) Vector3 :

Get averaged velocity of particle since last initialization

property grid

Grid on which to compute the contact force field. Should be a list of 3D coordinates at the surface of the particle (a simple way to generate a well distributed grid at the surface of a sphere is with the Fibonacci lattice method).

property ids

Ids list of bodies affected by this PartialEngine.

initialization((TimeAverager)arg1) None :

Initialize tAccu to zero and the averaged variables to there instantaneous values. Necessary to execute before any simulation run, otherwise it crashes.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property sigma

Standard deviation of the Gaussian function, which determines how the contact forces are weighted based on their distance from a contact point. It is usually set at the order of the distance between two points in the grid.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.TorqueEngine(inherits PartialEngine Engine Serializable)

Apply given torque (momentum) value at every subscribed particle, at every step.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property moment

Torque value to be applied.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.TranslationEngine(inherits KinematicEngine PartialEngine Engine Serializable)

Engine applying translation motion (by setting linear velocity) to subscribed bodies.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property ids

Ids list of bodies affected by this PartialEngine.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property translationAxis

Direction of imposed translation [Vector3]

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property velocity

Scalar value of the imposed velocity [m/s]. Imposed vector velocity is velocity * axis

class yade.wrapper.TwoPhaseFlowEngine(inherits TwoPhaseFlowEngineT PartialEngine Engine Serializable)

documentation here

OSI((TwoPhaseFlowEngineT)arg1) float :

Return the number of interactions only between spheres.

property accumulativeDeformationFlux

accumulative internal flux caused by deformation

property accumulativeFlux

accumulative influx of water

actionMergingAlgorithm((TwoPhaseFlowEngine)arg1) None :

apply triangulation, while maintaining saturation

actionTPF((TwoPhaseFlowEngine)arg1) None :

run 1 time step flow Engine

property airWaterInterfacialArea

Air-water interfacial area, based on the pore-unit assembly and regular-shaped pore units

property alphaBound

if 0, use an alphaBoundary condition where CGAL finds minimum alpha necessary for a single solid object. Any positive value will be used for the alpha. All negative values deactivate the functionality.

property alphaBoundValue

value of alpha constant pressure condition

property areaAveragedPressure

Air-water interfacial area averaged water pressure

avFlVelOnSph((TwoPhaseFlowEngineT)arg1, (int)idSph) object :

compute a sphere-centered average fluid velocity

property averageCavityPressure

true means the pressure in the cavity will be averaged each iteration.

averagePressure((TwoPhaseFlowEngineT)arg1) float :

Measure averaged pore pressure in the entire volume, the cells adjacent to the boundaries are ignored if includeBoundaries=False

averageSlicePressure((TwoPhaseFlowEngineT)arg1, (float)posY) float :

Measure slice-averaged pore pressure at height posY

averageVelocity((TwoPhaseFlowEngineT)arg1) Vector3 :

measure the mean velocity in the period

blockCell((TwoPhaseFlowEngineT)arg1, (int)id, (bool)blockPressure) None :

block cell ‘id’. The cell will be excluded from the fluid flow problem and the conductivity of all incident facets will be null. If blockPressure=False, deformation is reflected in the pressure, else it is constantly 0.

property blockHook

Python command to be run when remeshing. Anticipated usage: define blocked cells (see also FlowEngine.blockCell), or apply exotic types of boundary conditions which need to visit the newly built mesh

property bndCondIsPressure

defines the type of boundary condition for each side. True if pressure is imposed, False for no-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondIsTemperature

defines the type of boundary condition for each side of triangulation (used with ThermalEngine only). True if temperature is imposed, False for no heat-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondIsWaterReservoir

Boundary conditions, if bndCondIsPressure[] = True, is it air or water boundary condition? True is water reservoir

property bndCondValue

Imposed value of a boundary condition. Only applies if the boundary condition is imposed pressure, else the imposed flux is always zero presently (may be generalized to non-zero imposed fluxes in the future).

bodyNormalLubStress((TwoPhaseFlowEngineT)arg1, (int)idSph) Matrix3 :

Return the normal lubrication stress on sphere idSph.

bodyShearLubStress((TwoPhaseFlowEngineT)arg1, (int)idSph) Matrix3 :

Return the shear lubrication stress on sphere idSph.

property boundaryPressure

values defining pressure along x-axis for the top surface. See also FlowEngine::boundaryXPos

property boundaryUseMaxMin

If true (default value) bounding sphere is added as function of max/min sphere coord, if false as function of yade wall position

property boundaryVelocity

velocity on top boundary, only change it using FlowEngine::setBoundaryVel

property boundaryXPos

values of the x-coordinate for which pressure is defined. See also FlowEngine::boundaryPressure

property breakControlledRemesh

If true, remesh will occur everytime a break occurs in JCFpmPhys. Designed to increase accuracy and efficiency in hydraulic fracture simulations.

calculateResidualSaturation((TwoPhaseFlowEngine)arg1) None :

Calculate the residual saturation for each pore body

property cavityFactor

Permeability/viscosity for cavity cell neighbors (arbitrarily high to model triangulated fluid filled cavity).

property cavityFluidDensity

>0 means cavity compressibility model considers density changes instead of volume changes.

property cavityFlux

For adding flux to pressuremanaged cavity model (FlowEngine::controlCavityPressure). Negavite influx, postive outflux.

property centroidAverageWaterPressure

Water pressure based on centroid-corrected averaging, see Korteland et al. (2010) - what is the correct definition of average pressure?

cholmodStats((TwoPhaseFlowEngineT)arg1) None :

get statistics of cholmod solver activity

property clampKValues

If true, clamp local permeabilities in [minKdivKmean,maxKdivKmean]*globalK. This clamping can avoid singular values in the permeability matrix and may reduce numerical errors in the solve phase. It will also hide junk values if they exist, or bias all values in very heterogeneous problems. So, use this with care.

clearImposedFlux((TwoPhaseFlowEngineT)arg1) None :

Clear the list of points with flux imposed.

clearImposedPressure((TwoPhaseFlowEngineT)arg1) None :

Clear the list of points with pressure imposed.

clusterInvadePore((TwoPhaseFlowEngine)arg1, (int)cellId) object :

drain the pore identified by cellId and update the clusters accordingly.

clusterInvadePoreFast((TwoPhaseFlowEngine)arg1, (int)cellId) object :

drain the pore identified by cellId and update the clusters accordingly. This ‘fast’ version is faster and it also preserves interfaces through cluster splitting. OTOH it does not update entry Pc nor culsters volume (it could if needed)

clusterOutvadePore((TwoPhaseFlowEngine)arg1, (int)startingId, (int)imbibedId[, (int)index=-1]) object :

imbibe the pore identified by imbibedId and merge the newly connected clusters if it happens. startingId->imbibedId defines the throat through which imbibition occurs. Giving index of the facet in cluster::interfaces should speedup its removal

compTessVolumes((TwoPhaseFlowEngineT)arg1) None :

Like TesselationWrapper::computeVolumes()

computeCapillaryForce((TwoPhaseFlowEngine)arg1[, (bool)addForces=False[, (bool)permanently=False]]) None :

Compute capillary force. Optionaly add them to body forces, for current iteration or permanently.

property computeForceActivated

Activate capillary force computation. WARNING: turning off means capillary force is not computed at all, but the drainage can still work.

computeOnePhaseFlow((TwoPhaseFlowEngine)arg1) None :

compute pressure and fluxes in the W-phase

property controlCavityPressure

use full cavity flux and fluidbulkmodulus to control cavity as dynamic pressure (dirichlet) boundary condition.

property controlCavityVolumeChange

cavity imposes a volume change on neighbor cells (shouldnt be used with controlCavityPressure)

property convertClumps

If true the clumps will be temptatively converted into equivalent spheres in the triangulation, and clump members are skipped. Else clumps are ignored and spherical clump members are triangulated as independent bodies.

copyPoreDataToCells((TwoPhaseFlowEngine)arg1) None :

copy data from merged pore units back to grain-based tetrahedra, this should be done before exporting VTK files

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property debug

Activate debug messages

property debugTPF

Print debuging messages two phase flow engine

property decoupleForces

If true, viscous and pressure forces are not imposed on particles. Useful for speeding up simulations in ultra-stiff cohesive materials.

property defTolerance

Cumulated deformation threshold for which retriangulation of pore space is performed. If negative, the triangulation update will occure with a fixed frequency on the basis of FlowEngine::meshUpdateInterval

property deformation

Boolean to indicate whether simulations of dynamic flow are withing a deformating packing or not. If true, change of void volume due to deformation is considered in flow computations.

property deltaTimeTruncation

truncation of time step, to avoid very small time steps during local imbibition, NOTE it does affect the mass conservation not set to 0

property desiredPorosity

Correct the cell volumes to reflect this desired porosity (not active by default (0)).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property doInterpolate

Force the interpolation of cell’s info while remeshing. By default, interpolation would be done only for compressible fluids. It can be forced with this flag.

property drainageFirst

If true, activate drainage first (initial saturated), then imbibition; if false, activate imbibition first (initial unsaturated), then drainage.

property dt

timestep [s]

property dtDynTPF

Parameter which stores the smallest time step, based on the residence time

edgeSize((TwoPhaseFlowEngineT)arg1) float :

Return the number of interactions.

emulateAction((TwoPhaseFlowEngineT)arg1) None :

get scene and run action (may be used to manipulate an engine outside the timestepping loop).

property entryMethodCorrection

Parameter that is used in computing entry pressure of a pore throat: P_ij = entryMethodCorrection * surfaceTension / radius_porethroat

property entryPressureMethod

integer to define the method used to determine the pore throat radii and the according entry pressures. 1)radius of entry pore throat based on MS-P method; 2) radius of the inscribed circle; 3) radius of the circle with equivalent surface area of the pore throat.

property eps

roughness defined as a fraction of particles size, giving the minimum distance between particles in the lubrication model.

property epsVolMax

Maximal absolute volumetric strain computed at each iteration. (auto-updated)

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

exportMatrix((TwoPhaseFlowEngineT)arg1[, (str)filename='matrix']) None :

Export system matrix to a file with all entries (even zeros will displayed).

exportTriplets((TwoPhaseFlowEngineT)arg1[, (str)filename='triplets']) None :

Export system matrix to a file with only non-zero entries.

property first

Controls the initialization/update phases

property firstDynTPF

this bool activated the initialization of the dynamic flow engine, such as merging and defining initial values

property fixTriUpdatePermInt

If positive, triangulation is fixed and DFNFlow trickPermeability is run according to the interval. Activating this automatically sets FlowEngine::meshUpdateInt and FlowEngine::defTolerance to -1 (never retriangulate).

property fixedAlpha

If true, a constant-sized alpha vertex will be placed exactly above each facet. If false, logic is used to improve cell sizes in concave regions.

property flatThreshold

If >=0, pore volumes below flatThreshold value are blocked from flow calc. Useful for compressible flow involving odd triangulations with some very flat pores.

property fluidBulkModulus

Bulk modulus of fluid (inverse of compressibility) K=-dP*V/dV [Pa]. Flow is compressible if fluidBulkModulus > 0, else incompressible.

property fluidCp

Heat capacity of fluid (for thermalEngine).

fluidForce((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the fluid force on sphere idSph.

property fluidRho

Density of fluid (for thermalEngine).

property fluxInViaWBC

Total water flux over water boundary conditions

property forceMetis

If true, METIS is used for matrix preconditioning, else Cholmod is free to choose the best method (which may be METIS to, depending on the matrix). See nmethods in Cholmod documentation

property fractionMinSaturationInvasion

Set the threshold saturation at which drainage can occur (Sthr = fractionMinSaturationInvasion), note that -1 implied the conventional definition of Sthr

getBoundaryFluidArea((TwoPhaseFlowEngineT)arg1, (int)boundary) float :

Get total fluid area associated with boundary defined by its body id.

getBoundaryFlux((TwoPhaseFlowEngineT)arg1, (int)boundary) float :

Get total flux through boundary defined by its body id.

Note

The flux may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such flux evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

getBoundaryVel((TwoPhaseFlowEngineT)arg1, (int)boundary) object :

Get total avg cell velocity associated with boundary defined by its body id.

getBoundaryVolume((TwoPhaseFlowEngineT)arg1, (int)arg2, (float)boundary) float :

Get total volume flowing through boundary defined by its body id in current timestep dt.

Note

The volume may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such volume evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

property getCHOLMODPerfTimings

Print CHOLMOD build, analyze, and factorize timings

getCavityDensity((TwoPhaseFlowEngineT)arg1) float :

Return the density of cavity fluid.

getCavityFlux((TwoPhaseFlowEngineT)arg1) float :

Return the flux through the edge of the cavity.

getCell((TwoPhaseFlowEngineT)arg1, (float)X, (float)Y, (float)Z) int :

get id of the cell containing (X,Y,Z).

getCell2((TwoPhaseFlowEngine)arg1, (float)arg2, (float)arg3, (float)pos) int :

get id of the cell containing (X,Y,Z).

getCellBarycenter((TwoPhaseFlowEngineT)arg1, (int)id) Vector3 :

get barycenter of cell ‘id’.

getCellCenter((TwoPhaseFlowEngineT)arg1, (int)id) Vector3 :

get voronoi center of cell ‘id’.

getCellEntrySaturation((TwoPhaseFlowEngine)arg1, (int)arg2) list :

get the entry saturation of each pore throat

getCellFlux((TwoPhaseFlowEngineT)arg1, (int)cond) float :

Get influx in cell associated to an imposed P (indexed using ‘cond’).

getCellFluxFromId((TwoPhaseFlowEngineT)arg1, (int)id) float :

Get influx in cell.

getCellHasInterface((TwoPhaseFlowEngine)arg1, (int)arg2) bool :

indicates whether a NW-W interface is present within the cell

getCellInSphereRadius((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get the radius of the inscribed sphere in a pore unit

getCellInvVoidVolume((TwoPhaseFlowEngineT)arg1, (int)id) float :

get the inverse of the cell volume for cell ‘id’ after pore volumes have been initialized and FlowEngine:iniVoidVolumes = True, or compressibility scheme active with FlowEngine::fluidBulkModulus.

getCellIsFictious((TwoPhaseFlowEngine)arg1, (int)arg2) bool :

Check the connection between pore and boundary. If true, pore throat connects the boundary.

getCellIsNWRes((TwoPhaseFlowEngine)arg1, (int)arg2) bool :

get status wrt ‘non-wetting reservoir’ state

getCellIsTrapNW((TwoPhaseFlowEngine)arg1, (int)arg2) bool :

get status wrt ‘trapped non-wetting phase’ state

getCellIsTrapW((TwoPhaseFlowEngine)arg1, (int)arg2) bool :

get status wrt ‘trapped wetting phase’ state

getCellIsWRes((TwoPhaseFlowEngine)arg1, (int)arg2) bool :

get status wrt ‘wetting reservoir’ state

getCellLabel((TwoPhaseFlowEngine)arg1, (int)arg2) int :

get cell label. 0 for NW-reservoir; 1 for W-reservoir; others for disconnected W-clusters.

getCellMergedID((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get the saturation of imbibition

getCellMergedVolume((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get the merged volume of pore space in each pore unit

getCellPImposed((TwoPhaseFlowEngineT)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed pressure.

getCellPorosity((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get the porosity of individual cells.

getCellPressure((TwoPhaseFlowEngineT)arg1, (int)id) float :

get pressure by cell ‘id’. Note: getting pressure at position (x,y,z) might be more usefull, see :yref`FlowEngine::getPorePressure`:

getCellSaturation((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get saturation of one pore

getCellTImposed((TwoPhaseFlowEngineT)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed temperature.

getCellTemperature((TwoPhaseFlowEngineT)arg1, (int)id) float :

get pressure in cell ‘id’.

getCellThresholdSaturation((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get the saturation of imbibition

getCellVelocity((TwoPhaseFlowEngineT)arg1, (Vector3)pos) object :

Get relative cell velocity at position pos[0] pos [1] pos[2].

getCellVoidVolume((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get the volume of pore space in each pore unit

getCellVolume((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get the volume of each cell

getClusters((TwoPhaseFlowEngine)arg1) list :

Get the list of clusters.

getConductivity((TwoPhaseFlowEngineT)arg1, (int)cellId, (int)throat) float :

get conductivity from cell and throat, with throat between 0 and 3 (same ordering as incident cells)

getConstrictions((TwoPhaseFlowEngineT)arg1[, (bool)all=True]) list :

Get the list of constriction radii (inscribed circle) for all finite facets (if all==True) or all facets not incident to a virtual bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres.

getConstrictionsFull((TwoPhaseFlowEngineT)arg1[, (bool)all=True]) list :

Get the list of constrictions (inscribed circle) for all finite facets (if all==True), or all facets not incident to a fictious bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres. The constrictions are returned in the format {{cell1,cell2}{rad,nx,ny,nz}}

getDiffusionCoeff((TwoPhaseFlowEngineT)arg1, (int)cellId, (int)throat) float :

get the ratio of throat cross-sectional area and distance between two cells

getEffRcByPosRadius((TwoPhaseFlowEngine)arg1, (Vector3)position1, (float)radius1, (Vector3)position2, (float)radius2, (Vector3)position3, (float)radius3) float :

get effective radius by three spheres position and radius.(inscribed sphere)

getEquivalentCompressibility((TwoPhaseFlowEngineT)arg1) float :

Return the equivalent compressibility used for modeling air water mixture in cavity.

getIncidentCells((TwoPhaseFlowEngineT)arg1, (int)vertexId) list :

get ids of all cells of which vertexId is a vertex. Typical usage is for getting cells indident to a boundary.

getMSPRcByPosRadius((TwoPhaseFlowEngine)arg1, (Vector3)position1, (float)radius1, (Vector3)position2, (float)radius2, (Vector3)position3, (float)radius3) float :

get entry radius wrt MSP method by three spheres position and radius.

getMaxImbibitionPc((TwoPhaseFlowEngine)arg1) float :

Get the maximum entry capillary pressure for the next imbibition step.

getMinDrainagePc((TwoPhaseFlowEngine)arg1) float :

Get the minimum entry capillary pressure for the next drainage step.

getNeighbors((TwoPhaseFlowEngine)arg1, (int)id[, (bool)withInfCell=True]) list :

get 4 neigboring cells, optionally exclude the infinite cells if withInfCell is False

getPorePressure((TwoPhaseFlowEngineT)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getPoreTemperature((TwoPhaseFlowEngineT)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getPoreThroatRadius((TwoPhaseFlowEngine)arg1, (int)cell1_ID, (int)cell2_ID) float :

get the pore throat radius between cell1 and cell2.

getPoreThroatRadiusList((TwoPhaseFlowEngine)arg1, (int)cell_ID) list :

get 4 pore throat radii of a cell.

getPotentialPendularSpheresPair((TwoPhaseFlowEngine)arg1) list :

Get the list of sphere ID pairs of potential pendular liquid bridge.

property getQuantitiesUpdateCont

Continuous update of various macro-scale quantities or not. Note that the updating quantities is computationally expensive

getSaturation((TwoPhaseFlowEngine)arg1, (bool)isSideBoundaryIncluded) float :

Get saturation of entire packing. If isSideBoundaryIncluded=false (default), the pores of side boundary are excluded in saturation calculating; if isSideBoundaryIncluded=true (only in isInvadeBoundary=true drainage mode), the pores of side boundary are included in saturation calculating.

getSolidSurfaceAreaPerParticle((TwoPhaseFlowEngine)arg1, (int)cell_ID) list :

get solid area inside a packing of particles

getVertices((TwoPhaseFlowEngineT)arg1, (int)id) list :

get the vertices of a cell

property idOffset

If the bounding walls of the fluid mesh are not walls of the scene (i.e. are not elements of O.bodies), the offset should be set equal to the size of O.bodies. If the bounding walls are bodies of the scene but are not numbered as 0-5 then offset should be the number of bodies comming before the walls. Set offset<0 to get it set equal to O.bodies.size(), it will also update FlowEngine::wallIds.

property ids

Ids list of bodies affected by this PartialEngine.

property ignoredBody

DEPRECATED, USE MASK - Id of a sphere to exclude from the triangulation.)

imposeCavity((TwoPhaseFlowEngineT)arg1, (Vector3)pos) int :

Cell with location ‘pos’ participates in a cavity (high conductivity and no volume factoring). The index of the condition is returned (for multiple imposed pressures at different points).

imposeDeformationFluxTPF((TwoPhaseFlowEngine)arg1) None :

Impose fluxes defined in dvTPF

imposeFlux((TwoPhaseFlowEngineT)arg1, (Vector3)pos, (float)p) None :

Impose a flux in cell located at ‘pos’ (i.e. add a source term in the flow problem). Outflux positive, influx negative.

imposePressure((TwoPhaseFlowEngineT)arg1, (Vector3)pos, (float)p) int :

Impose pressure in cell of location ‘pos’. The index of the condition is returned (for multiple imposed pressures at different points).

imposePressureFromId((TwoPhaseFlowEngineT)arg1, (int)id, (float)p) int :

Impose pressure in cell of index ‘id’ (after remeshing the same condition will apply for the same location, regardless of what the new cell index is at this location). The index of the condition itself is returned (for multiple imposed pressures at different points).

property iniVoidVolumes

activate the computation of the inverse of the initial void volumes in each cell when pore volumes are initialized.

property initialPC

Initial capillary pressure of the water-air inside the packing

property initialWetting

Initial wetting saturated (=true) or non-wetting saturated (=false)

initialization((TwoPhaseFlowEngine)arg1) None :

Initialize invasion setup. Build network, compute pore geometry info and initialize reservoir boundary conditions.

initializeVolumes((TwoPhaseFlowEngineT)arg1) None :

initialize pore volumes.

invasion((TwoPhaseFlowEngine)arg1) None :

Run the drainage invasion.

property isActivated

Activates Flow Engine

property isCellLabelActivated

Activate cell labels for marking disconnected wetting clusters. NW-reservoir label 0; W-reservoir label 1; disconnected W-clusters label from 2.

isCellNeighbor((TwoPhaseFlowEngine)arg1, (int)cell1_ID, (int)cell2_ID) bool :

check if cell1 and cell2 are neigbors.

property isDrainageActivated

Activates drainage.

property isImbibitionActivated

Activates imbibition.

property isInvadeBoundary

Invasion side boundary condition. If True, pores of side boundary can be invaded; if False, the pore throats connecting side boundary are closed, those pores are excluded in saturation calculation.

property isPhaseTrapped

If True, both phases can be entrapped by the other, which would correspond to snap-off. If false, both phases are always connected to their reservoirs, thus no snap-off.

property iterationTPF

Iteration number

property keepTriangulation

this bool activated triangulation or not during initialization

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

If mask defined, only bodies with corresponding groupMask will be affected by this engine. If 0, all bodies will be affected.

property maxIDMergedCells

maximum number of merged ID, this is computed in mergeCells()

property maxKdivKmean

define the max K value (see FlowEngine::clampKValues)

property maximumRatioPoreThroatoverPoreBody

maximum ratio of pore throat radius over pore body radius, this is used during merging of tetrahedra.

property meanKStat

report the local permeabilities’ correction

mergeCells((TwoPhaseFlowEngine)arg1) None :

Extract the pore network of the granular material

property meshUpdateInterval

Maximum number of timesteps between re-triangulation events (a negative value will never re-triangulate). See also FlowEngine::defTolerance.

metisUsed((TwoPhaseFlowEngineT)arg1) bool :

check wether metis lib is effectively used

property minKdivKmean

define the min K value (see FlowEngine::clampKValues)

property minimumPorosity

value used to limit the allowable minimum porosity for pore volume calculations. Particularly useful if very small volumes are impacting stability

property modelRunName

Name of simulation, to be implemented into output files

property multithread

Build triangulation and factorize in the background (multi-thread mode)

nCells((TwoPhaseFlowEngineT)arg1) int :

get the total number of finite cells in the triangulation.

normalLubForce((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal lubrication force on sphere idSph.

property normalLubrication

compute normal lubrication force as developped by Brule

normalVect((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal vector between particles.

normalVelocity((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal velocity of the interaction.

property numFactorizeThreads

number of openblas threads in the factorization phase

property numSolveThreads

number of openblas threads in the solve phase.

property numberOfPores

Number of pores (i.e. number of tetrahedra, but compensated for merged tetrahedra

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

onlySpheresInteractions((TwoPhaseFlowEngineT)arg1, (int)interaction) int :

Return the id of the interaction only between spheres.

property pZero

The value used for initializing pore pressure. It is useless for incompressible fluid, but important for compressible model.

property permeabilityFactor

Permability multiplier (\(m\)): \(m=1\) (default) attempts to predicty the actual hydraulic conductivity using a Poiseuille equation; \(m>0\) multiplies the default values by \(m\); \(m<0\) defines the conductivity independently of particle size and viscosity as if the material was a homogeneous continuum of conductivity \(-m\)

property permeabilityMap

Enable/disable stocking of average permeability scalar in cell infos.

property phiZero

if >0, considers water aircontent impact on fluid compressibility.

property porosity

Porosity computed at each retriangulation (auto-updated)

property pressureForce

compute the pressure field and associated fluid forces. WARNING: turning off means fluid flow is not computed at all.

pressureProfile((TwoPhaseFlowEngineT)arg1, (float)wallUpY, (float)wallDownY) None :

Measure pore pressure in 6 equally-spaced points along the height of the sample

property primaryTPF

Boolean to indicate whether the initial conditions are for primary drainage of imbibition (dictated by drainageFirst) or secondary drainage or imbibition. Note that during simulations, a switch from drainage to imbibition or vise versa can easily be made by changing waterBoundaryPressure

printVertices((TwoPhaseFlowEngineT)arg1) None :

Export vertex positions and types

property pumpTorque

Compute pump torque applied on particles

reTriangulateSpheres((TwoPhaseFlowEngine)arg1) None :

apply triangulation, while maintaining saturation

property recursiveInvasion

If true the invasion stops only when no entry pc is less than current capillary pressure, implying simultaneous invasion of many pores. Else only one pore invasion per invasion step.

property relax

Gauss-Seidel relaxation

property remesh

update triangulation? – YET TO BE IMPLEMENTED

resetLinearSystem((TwoPhaseFlowEngineT)arg1) None :

trigger rebuild of the linear system while keeping the same triangulation

property safetyFactorTimeStep

Safey coefficient for time step

savePhaseVtk((TwoPhaseFlowEngine)arg1[, (str)folder='./phaseVtk'[, (bool)withBoundaries=True]]) None :

Save the saturation of local pores in vtk format. Sw(NW-pore)=0, Sw(W-pore)=1. Specify a folder name for output.

savePoreNetwork((TwoPhaseFlowEngine)arg1[, (str)folder='./poreNetwork']) None :

Extract the pore network of the granular material (i.e. based on triangulation of the pore space

saveVtk((TwoPhaseFlowEngineT)arg1[, (str)folder='./VTK'[, (bool)withBoundaries=False]]) None :

Save pressure field in vtk format. Specify a folder name for output. The cells adjacent to the bounding spheres are generated conditionally based on FlowEngine::withBoundaries (not compatible with periodic boundaries)

setBoundaryNormal((TwoPhaseFlowEngineT)arg1, (int)arg2, (Vector3)arg3) None :

define the unit outward-pointing normal of a boundary (0<=index<=5).

setCellDeltaVolume((TwoPhaseFlowEngine)arg1, (int)id, (float)value) None :

get id of the cell containing (X,Y,Z).

setCellHasInterface((TwoPhaseFlowEngine)arg1, (int)arg2, (bool)arg3) None :

change wheter a cell has a NW-W interface

setCellHasInterface( (TwoPhaseFlowEngine)arg1, (int)arg2, (bool)arg3) -> None :

change wheter a cell has a NW-W interface

setCellIsNWRes((TwoPhaseFlowEngine)arg1, (int)arg2, (bool)arg3) None :

set status whether ‘wetting reservoir’ state

setCellIsWRes((TwoPhaseFlowEngine)arg1, (int)arg2, (bool)arg3) None :

set status whether ‘wetting reservoir’ state

setCellPImposed((TwoPhaseFlowEngineT)arg1, (int)id, (bool)pImposed) None :

make cell ‘id’ assignable with imposed pressure.

setCellPressure((TwoPhaseFlowEngineT)arg1, (int)id, (float)pressure) None :

set pressure in cell ‘id’.

setCellSaturation((TwoPhaseFlowEngine)arg1, (int)arg2, (float)arg3) None :

change saturation of one pore

setCellTImposed((TwoPhaseFlowEngineT)arg1, (int)id, (bool)tImposed) None :

make cell ‘id’ assignable with imposed temperature.

setCellTemperature((TwoPhaseFlowEngineT)arg1, (int)id, (float)temperature) None :

set temperature in cell ‘id’.

property setFractionParticles

Correction fraction for swelling of particles by mismatch of surface area of particles with those from actual surface area in pore units

setImposedPressure((TwoPhaseFlowEngineT)arg1, (int)cond, (float)p) None :

Set pressure value at the point indexed ‘cond’.

setPoreBodyRadius((TwoPhaseFlowEngine)arg1, (int)arg2, (float)arg3) None :

set the entry pore body radius.

setPoreThroatRadius((TwoPhaseFlowEngine)arg1, (int)cell1_ID, (int)cell2_ID, (float)radius) None :

set the pore throat radius between cell1 and cell2.

shearLubForce((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear lubrication force on sphere idSph.

shearLubTorque((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear lubrication torque on sphere idSph.

property shearLubrication

compute shear lubrication force as developped by Brule (FIXME: ref.)

shearVelocity((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear velocity of the interaction.

property simpleWaterPressure

Water pressure based on averaging over pore volume

property sineAverage

Pressure value (average) when sinusoidal pressure is applied

property sineMagnitude

Pressure value (amplitude) when sinusoidal pressure is applied (p )

property slipBoundary

Controls friction condition on lateral walls

property solvePressureSwitch

solve for pressure during actionTPF()

property stiffness

equivalent contact stiffness used in the lubrication model

property stopSimulation

Boolean to indicate that dynamic flow simulations cannot find a solution (or next time step). If True, stop simulations

surfaceDistanceParticle((TwoPhaseFlowEngineT)arg1, (int)interaction) float :

Return the distance between particles.

surfaceSolidThroatInPore((TwoPhaseFlowEngineT)arg1, (int)cellId, (int)throatIndex) float :

returns solid area in the throat (index 0-3), keeping only that part of the throat in cell.

property surfaceTension

Water Surface Tension in contact with air at 20 Degrees Celsius is: 0.0728(N/m)

property swelling

If true, include swelling of particles during TPF computations

property tZero

The value used for initializing pore temperatures in thermalEngine.

property tempDependentViscosity

boolean to vary viscosity (ultimately cell permeability) with cell temperature. Linear model for viscosity b/w 20-70 degC. If true, kFactor must also be set negative, and becomes the darcy permeability.

property thermalBndCondValue

Imposed temperature boundary condition value for the cells in the triangulation (used with ThermalEngine only).

property thermalEngine

activate thermalEngine within FlowEngine.

property thermalPorosity

>0 means the void volume space will be factored by thermalPorosity for pore internal energy considerations.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property tolerance

Gauss-Seidel tolerance

property totalWaterVolume

total watervolume

property truncationPrecision

threshold at which a saturation is truncated

property twistTorque

Compute twist torque applied on particles

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

updateBCs((TwoPhaseFlowEngineT)arg1) None :

Update the boundary condition to reflect changes of boundary pressure (needed typically after changing FlowEngine::bndCondValue). It is not sufficient to reflect changes of the type of boundary condition (FlowEngine::bndCondIsPressure), in such case re-triangulation or at least updating the linear system is needed (see FlowEngine::updateTriangulation and FlowEngine::updateLinearSystem). Conversely, the update is not necessary for changing the value of point-wise imposed pressure (FlowEngine::imposePressure)

updatePressure((TwoPhaseFlowEngine)arg1) None :

Apply the values of FlowEngine::bndCondValue to the boundary cells. Note: boundary pressure will be updated automatically in many cases, this function is for some low-level manipulations.

property updateTriangulation

If true the medium is retriangulated. Can be switched on to force retriangulation after some events (else it will be true periodicaly based on FlowEngine::defTolerance and FlowEngine::meshUpdateInterval. Of course, it costs CPU time. Note that the new triangulation will start to be effectively used only after one iteration (i.e. O.run(2) gives a result with the new one, O.run(1) does not).

updateVolumes((TwoPhaseFlowEngineT)arg1) None :

update rates of volume change

property useFastInvasion

use fast version of invasion

property useSolver

Solver to use. 0:Gauss-Seidel, 3: Cholesky factorization (via Eigen3 interface), 4:multicore CPU or GPU accelerated CHOLMOD (without Eigen3), 1-2: undefined.

property viscosity

viscosity of the fluid

property viscousNormalBodyStress

compute normal viscous stress applied on each body

property viscousShear

compute viscous shear terms as developped by Donia Marzougui (FIXME: ref.)

property viscousShearBodyStress

compute shear viscous stress applied on each body

property voidVolume

total void volume, excluding boundary cells

volume((TwoPhaseFlowEngineT)arg1[, (int)id=0]) float :

Returns the volume of Voronoi’s cell of a sphere.

property volumeCorrection

Volume correction factor (not user controlled. auto computed if FlowEngine::desiredPorosity != 0)

property volumeFactor

Factor used for simulating low porosity (for thermal considerations only) in high porosity DEM packings.

property wallIds

body ids of the boundaries (default values are ok only if aabbWalls are appended before spheres, i.e. numbered 0,…,5)

property wallThickness

Walls thickness

property waterBoundaryPressure

Water pressure at boundary used in computations, is set automaticaly, but this value can be used to change water pressure during simulations

property waterPressure

Volume-averaged water pressure

property waterPressurePartiallySatPores

water pressure based on the volume-averaged water pressure in partially-saturated pore units (i.e. pore units having an interface)

property waterSaturation

Water saturation, excluding the boundary cells

property waterVolumeTruncatedLost

Water volume that has been truncated.

property waveAction

Allow sinusoidal pressure condition to simulate ocean waves

property xmax

See FlowEngine::xmin.

property xmin

Index of the boundary \(x_{min}\). This index is not equal the the id of the corresponding body in general, it may be used to access the corresponding attributes (e.g. flow.bndCondValue[flow.xmin], flow.wallId[flow.xmin],…).

property ymax

See FlowEngine::xmin.

property ymin

See FlowEngine::xmin.

property zmax

See FlowEngine::xmin.

property zmin

See FlowEngine::xmin.

class yade.wrapper.TwoPhaseFlowEngineT(inherits PartialEngine Engine Serializable)

A generic engine from wich more specialized engines can inherit. It is defined for the sole purpose of inserting the right data classes CellInfo and VertexInfo in the triangulation, and it should not be used directly. Instead, look for specialized engines, e.g. FlowEngine, PeriodicFlowEngine, or DFNFlowEngine.

OSI((TwoPhaseFlowEngineT)arg1) float :

Return the number of interactions only between spheres.

property alphaBound

if 0, use an alphaBoundary condition where CGAL finds minimum alpha necessary for a single solid object. Any positive value will be used for the alpha. All negative values deactivate the functionality.

property alphaBoundValue

value of alpha constant pressure condition

avFlVelOnSph((TwoPhaseFlowEngineT)arg1, (int)idSph) object :

compute a sphere-centered average fluid velocity

property averageCavityPressure

true means the pressure in the cavity will be averaged each iteration.

averagePressure((TwoPhaseFlowEngineT)arg1) float :

Measure averaged pore pressure in the entire volume, the cells adjacent to the boundaries are ignored if includeBoundaries=False

averageSlicePressure((TwoPhaseFlowEngineT)arg1, (float)posY) float :

Measure slice-averaged pore pressure at height posY

averageVelocity((TwoPhaseFlowEngineT)arg1) Vector3 :

measure the mean velocity in the period

blockCell((TwoPhaseFlowEngineT)arg1, (int)id, (bool)blockPressure) None :

block cell ‘id’. The cell will be excluded from the fluid flow problem and the conductivity of all incident facets will be null. If blockPressure=False, deformation is reflected in the pressure, else it is constantly 0.

property blockHook

Python command to be run when remeshing. Anticipated usage: define blocked cells (see also FlowEngine.blockCell), or apply exotic types of boundary conditions which need to visit the newly built mesh

property bndCondIsPressure

defines the type of boundary condition for each side. True if pressure is imposed, False for no-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondIsTemperature

defines the type of boundary condition for each side of triangulation (used with ThermalEngine only). True if temperature is imposed, False for no heat-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondValue

Imposed value of a boundary condition. Only applies if the boundary condition is imposed pressure, else the imposed flux is always zero presently (may be generalized to non-zero imposed fluxes in the future).

bodyNormalLubStress((TwoPhaseFlowEngineT)arg1, (int)idSph) Matrix3 :

Return the normal lubrication stress on sphere idSph.

bodyShearLubStress((TwoPhaseFlowEngineT)arg1, (int)idSph) Matrix3 :

Return the shear lubrication stress on sphere idSph.

property boundaryPressure

values defining pressure along x-axis for the top surface. See also FlowEngine::boundaryXPos

property boundaryUseMaxMin

If true (default value) bounding sphere is added as function of max/min sphere coord, if false as function of yade wall position

property boundaryVelocity

velocity on top boundary, only change it using FlowEngine::setBoundaryVel

property boundaryXPos

values of the x-coordinate for which pressure is defined. See also FlowEngine::boundaryPressure

property breakControlledRemesh

If true, remesh will occur everytime a break occurs in JCFpmPhys. Designed to increase accuracy and efficiency in hydraulic fracture simulations.

property cavityFactor

Permeability/viscosity for cavity cell neighbors (arbitrarily high to model triangulated fluid filled cavity).

property cavityFluidDensity

>0 means cavity compressibility model considers density changes instead of volume changes.

property cavityFlux

For adding flux to pressuremanaged cavity model (FlowEngine::controlCavityPressure). Negavite influx, postive outflux.

cholmodStats((TwoPhaseFlowEngineT)arg1) None :

get statistics of cholmod solver activity

property clampKValues

If true, clamp local permeabilities in [minKdivKmean,maxKdivKmean]*globalK. This clamping can avoid singular values in the permeability matrix and may reduce numerical errors in the solve phase. It will also hide junk values if they exist, or bias all values in very heterogeneous problems. So, use this with care.

clearImposedFlux((TwoPhaseFlowEngineT)arg1) None :

Clear the list of points with flux imposed.

clearImposedPressure((TwoPhaseFlowEngineT)arg1) None :

Clear the list of points with pressure imposed.

compTessVolumes((TwoPhaseFlowEngineT)arg1) None :

Like TesselationWrapper::computeVolumes()

property controlCavityPressure

use full cavity flux and fluidbulkmodulus to control cavity as dynamic pressure (dirichlet) boundary condition.

property controlCavityVolumeChange

cavity imposes a volume change on neighbor cells (shouldnt be used with controlCavityPressure)

property convertClumps

If true the clumps will be temptatively converted into equivalent spheres in the triangulation, and clump members are skipped. Else clumps are ignored and spherical clump members are triangulated as independent bodies.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property debug

Activate debug messages

property decoupleForces

If true, viscous and pressure forces are not imposed on particles. Useful for speeding up simulations in ultra-stiff cohesive materials.

property defTolerance

Cumulated deformation threshold for which retriangulation of pore space is performed. If negative, the triangulation update will occure with a fixed frequency on the basis of FlowEngine::meshUpdateInterval

property desiredPorosity

Correct the cell volumes to reflect this desired porosity (not active by default (0)).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property doInterpolate

Force the interpolation of cell’s info while remeshing. By default, interpolation would be done only for compressible fluids. It can be forced with this flag.

property dt

timestep [s]

edgeSize((TwoPhaseFlowEngineT)arg1) float :

Return the number of interactions.

emulateAction((TwoPhaseFlowEngineT)arg1) None :

get scene and run action (may be used to manipulate an engine outside the timestepping loop).

property eps

roughness defined as a fraction of particles size, giving the minimum distance between particles in the lubrication model.

property epsVolMax

Maximal absolute volumetric strain computed at each iteration. (auto-updated)

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

exportMatrix((TwoPhaseFlowEngineT)arg1[, (str)filename='matrix']) None :

Export system matrix to a file with all entries (even zeros will displayed).

exportTriplets((TwoPhaseFlowEngineT)arg1[, (str)filename='triplets']) None :

Export system matrix to a file with only non-zero entries.

property first

Controls the initialization/update phases

property fixTriUpdatePermInt

If positive, triangulation is fixed and DFNFlow trickPermeability is run according to the interval. Activating this automatically sets FlowEngine::meshUpdateInt and FlowEngine::defTolerance to -1 (never retriangulate).

property fixedAlpha

If true, a constant-sized alpha vertex will be placed exactly above each facet. If false, logic is used to improve cell sizes in concave regions.

property flatThreshold

If >=0, pore volumes below flatThreshold value are blocked from flow calc. Useful for compressible flow involving odd triangulations with some very flat pores.

property fluidBulkModulus

Bulk modulus of fluid (inverse of compressibility) K=-dP*V/dV [Pa]. Flow is compressible if fluidBulkModulus > 0, else incompressible.

property fluidCp

Heat capacity of fluid (for thermalEngine).

fluidForce((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the fluid force on sphere idSph.

property fluidRho

Density of fluid (for thermalEngine).

property forceMetis

If true, METIS is used for matrix preconditioning, else Cholmod is free to choose the best method (which may be METIS to, depending on the matrix). See nmethods in Cholmod documentation

getBoundaryFluidArea((TwoPhaseFlowEngineT)arg1, (int)boundary) float :

Get total fluid area associated with boundary defined by its body id.

getBoundaryFlux((TwoPhaseFlowEngineT)arg1, (int)boundary) float :

Get total flux through boundary defined by its body id.

Note

The flux may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such flux evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

getBoundaryVel((TwoPhaseFlowEngineT)arg1, (int)boundary) object :

Get total avg cell velocity associated with boundary defined by its body id.

getBoundaryVolume((TwoPhaseFlowEngineT)arg1, (int)arg2, (float)boundary) float :

Get total volume flowing through boundary defined by its body id in current timestep dt.

Note

The volume may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such volume evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

property getCHOLMODPerfTimings

Print CHOLMOD build, analyze, and factorize timings

getCavityDensity((TwoPhaseFlowEngineT)arg1) float :

Return the density of cavity fluid.

getCavityFlux((TwoPhaseFlowEngineT)arg1) float :

Return the flux through the edge of the cavity.

getCell((TwoPhaseFlowEngineT)arg1, (float)X, (float)Y, (float)Z) int :

get id of the cell containing (X,Y,Z).

getCellBarycenter((TwoPhaseFlowEngineT)arg1, (int)id) Vector3 :

get barycenter of cell ‘id’.

getCellCenter((TwoPhaseFlowEngineT)arg1, (int)id) Vector3 :

get voronoi center of cell ‘id’.

getCellFlux((TwoPhaseFlowEngineT)arg1, (int)cond) float :

Get influx in cell associated to an imposed P (indexed using ‘cond’).

getCellFluxFromId((TwoPhaseFlowEngineT)arg1, (int)id) float :

Get influx in cell.

getCellInvVoidVolume((TwoPhaseFlowEngineT)arg1, (int)id) float :

get the inverse of the cell volume for cell ‘id’ after pore volumes have been initialized and FlowEngine:iniVoidVolumes = True, or compressibility scheme active with FlowEngine::fluidBulkModulus.

getCellPImposed((TwoPhaseFlowEngineT)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed pressure.

getCellPressure((TwoPhaseFlowEngineT)arg1, (int)id) float :

get pressure by cell ‘id’. Note: getting pressure at position (x,y,z) might be more usefull, see :yref`FlowEngine::getPorePressure`:

getCellTImposed((TwoPhaseFlowEngineT)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed temperature.

getCellTemperature((TwoPhaseFlowEngineT)arg1, (int)id) float :

get pressure in cell ‘id’.

getCellVelocity((TwoPhaseFlowEngineT)arg1, (Vector3)pos) object :

Get relative cell velocity at position pos[0] pos [1] pos[2].

getCellVolume((TwoPhaseFlowEngineT)arg1, (Vector3)pos) float :

Get volume of cell at position pos[0] pos [1] pos[2].

getConductivity((TwoPhaseFlowEngineT)arg1, (int)cellId, (int)throat) float :

get conductivity from cell and throat, with throat between 0 and 3 (same ordering as incident cells)

getConstrictions((TwoPhaseFlowEngineT)arg1[, (bool)all=True]) list :

Get the list of constriction radii (inscribed circle) for all finite facets (if all==True) or all facets not incident to a virtual bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres.

getConstrictionsFull((TwoPhaseFlowEngineT)arg1[, (bool)all=True]) list :

Get the list of constrictions (inscribed circle) for all finite facets (if all==True), or all facets not incident to a fictious bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres. The constrictions are returned in the format {{cell1,cell2}{rad,nx,ny,nz}}

getDiffusionCoeff((TwoPhaseFlowEngineT)arg1, (int)cellId, (int)throat) float :

get the ratio of throat cross-sectional area and distance between two cells

getEquivalentCompressibility((TwoPhaseFlowEngineT)arg1) float :

Return the equivalent compressibility used for modeling air water mixture in cavity.

getIncidentCells((TwoPhaseFlowEngineT)arg1, (int)vertexId) list :

get ids of all cells of which vertexId is a vertex. Typical usage is for getting cells indident to a boundary.

getNeighbors((TwoPhaseFlowEngineT)arg1, (int)arg2) list :

get 4 neigboring cells

getPorePressure((TwoPhaseFlowEngineT)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getPoreTemperature((TwoPhaseFlowEngineT)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getVertices((TwoPhaseFlowEngineT)arg1, (int)id) list :

get the vertices of a cell

property idOffset

If the bounding walls of the fluid mesh are not walls of the scene (i.e. are not elements of O.bodies), the offset should be set equal to the size of O.bodies. If the bounding walls are bodies of the scene but are not numbered as 0-5 then offset should be the number of bodies comming before the walls. Set offset<0 to get it set equal to O.bodies.size(), it will also update FlowEngine::wallIds.

property ids

Ids list of bodies affected by this PartialEngine.

property ignoredBody

DEPRECATED, USE MASK - Id of a sphere to exclude from the triangulation.)

imposeCavity((TwoPhaseFlowEngineT)arg1, (Vector3)pos) int :

Cell with location ‘pos’ participates in a cavity (high conductivity and no volume factoring). The index of the condition is returned (for multiple imposed pressures at different points).

imposeFlux((TwoPhaseFlowEngineT)arg1, (Vector3)pos, (float)p) None :

Impose a flux in cell located at ‘pos’ (i.e. add a source term in the flow problem). Outflux positive, influx negative.

imposePressure((TwoPhaseFlowEngineT)arg1, (Vector3)pos, (float)p) int :

Impose pressure in cell of location ‘pos’. The index of the condition is returned (for multiple imposed pressures at different points).

imposePressureFromId((TwoPhaseFlowEngineT)arg1, (int)id, (float)p) int :

Impose pressure in cell of index ‘id’ (after remeshing the same condition will apply for the same location, regardless of what the new cell index is at this location). The index of the condition itself is returned (for multiple imposed pressures at different points).

property iniVoidVolumes

activate the computation of the inverse of the initial void volumes in each cell when pore volumes are initialized.

initializeVolumes((TwoPhaseFlowEngineT)arg1) None :

initialize pore volumes.

property isActivated

Activates Flow Engine

isCellNeighbor((TwoPhaseFlowEngineT)arg1, (int)cell1_ID, (int)cell2_ID) bool :

check if cell1 and cell2 are neigbors.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

If mask defined, only bodies with corresponding groupMask will be affected by this engine. If 0, all bodies will be affected.

property maxKdivKmean

define the max K value (see FlowEngine::clampKValues)

property meanKStat

report the local permeabilities’ correction

property meshUpdateInterval

Maximum number of timesteps between re-triangulation events (a negative value will never re-triangulate). See also FlowEngine::defTolerance.

metisUsed((TwoPhaseFlowEngineT)arg1) bool :

check wether metis lib is effectively used

property minKdivKmean

define the min K value (see FlowEngine::clampKValues)

property minimumPorosity

value used to limit the allowable minimum porosity for pore volume calculations. Particularly useful if very small volumes are impacting stability

property multithread

Build triangulation and factorize in the background (multi-thread mode)

nCells((TwoPhaseFlowEngineT)arg1) int :

get the total number of finite cells in the triangulation.

normalLubForce((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal lubrication force on sphere idSph.

property normalLubrication

compute normal lubrication force as developped by Brule

normalVect((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal vector between particles.

normalVelocity((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal velocity of the interaction.

property numFactorizeThreads

number of openblas threads in the factorization phase

property numSolveThreads

number of openblas threads in the solve phase.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

onlySpheresInteractions((TwoPhaseFlowEngineT)arg1, (int)interaction) int :

Return the id of the interaction only between spheres.

property pZero

The value used for initializing pore pressure. It is useless for incompressible fluid, but important for compressible model.

property permeabilityFactor

Permability multiplier (\(m\)): \(m=1\) (default) attempts to predicty the actual hydraulic conductivity using a Poiseuille equation; \(m>0\) multiplies the default values by \(m\); \(m<0\) defines the conductivity independently of particle size and viscosity as if the material was a homogeneous continuum of conductivity \(-m\)

property permeabilityMap

Enable/disable stocking of average permeability scalar in cell infos.

property phiZero

if >0, considers water aircontent impact on fluid compressibility.

property porosity

Porosity computed at each retriangulation (auto-updated)

property pressureForce

compute the pressure field and associated fluid forces. WARNING: turning off means fluid flow is not computed at all.

pressureProfile((TwoPhaseFlowEngineT)arg1, (float)wallUpY, (float)wallDownY) None :

Measure pore pressure in 6 equally-spaced points along the height of the sample

printVertices((TwoPhaseFlowEngineT)arg1) None :

Export vertex positions and types

property pumpTorque

Compute pump torque applied on particles

property relax

Gauss-Seidel relaxation

resetLinearSystem((TwoPhaseFlowEngineT)arg1) None :

trigger rebuild of the linear system while keeping the same triangulation

saveVtk((TwoPhaseFlowEngineT)arg1[, (str)folder='./VTK'[, (bool)withBoundaries=False]]) None :

Save pressure field in vtk format. Specify a folder name for output. The cells adjacent to the bounding spheres are generated conditionally based on FlowEngine::withBoundaries (not compatible with periodic boundaries)

setBoundaryNormal((TwoPhaseFlowEngineT)arg1, (int)arg2, (Vector3)arg3) None :

define the unit outward-pointing normal of a boundary (0<=index<=5).

setCellPImposed((TwoPhaseFlowEngineT)arg1, (int)id, (bool)pImposed) None :

make cell ‘id’ assignable with imposed pressure.

setCellPressure((TwoPhaseFlowEngineT)arg1, (int)id, (float)pressure) None :

set pressure in cell ‘id’.

setCellTImposed((TwoPhaseFlowEngineT)arg1, (int)id, (bool)tImposed) None :

make cell ‘id’ assignable with imposed temperature.

setCellTemperature((TwoPhaseFlowEngineT)arg1, (int)id, (float)temperature) None :

set temperature in cell ‘id’.

setImposedPressure((TwoPhaseFlowEngineT)arg1, (int)cond, (float)p) None :

Set pressure value at the point indexed ‘cond’.

shearLubForce((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear lubrication force on sphere idSph.

shearLubTorque((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear lubrication torque on sphere idSph.

property shearLubrication

compute shear lubrication force as developped by Brule (FIXME: ref.)

shearVelocity((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear velocity of the interaction.

property sineAverage

Pressure value (average) when sinusoidal pressure is applied

property sineMagnitude

Pressure value (amplitude) when sinusoidal pressure is applied (p )

property slipBoundary

Controls friction condition on lateral walls

property stiffness

equivalent contact stiffness used in the lubrication model

surfaceDistanceParticle((TwoPhaseFlowEngineT)arg1, (int)interaction) float :

Return the distance between particles.

surfaceSolidThroatInPore((TwoPhaseFlowEngineT)arg1, (int)cellId, (int)throatIndex) float :

returns solid area in the throat (index 0-3), keeping only that part of the throat in cell.

property tZero

The value used for initializing pore temperatures in thermalEngine.

property tempDependentViscosity

boolean to vary viscosity (ultimately cell permeability) with cell temperature. Linear model for viscosity b/w 20-70 degC. If true, kFactor must also be set negative, and becomes the darcy permeability.

property thermalBndCondValue

Imposed temperature boundary condition value for the cells in the triangulation (used with ThermalEngine only).

property thermalEngine

activate thermalEngine within FlowEngine.

property thermalPorosity

>0 means the void volume space will be factored by thermalPorosity for pore internal energy considerations.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property tolerance

Gauss-Seidel tolerance

property twistTorque

Compute twist torque applied on particles

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

updateBCs((TwoPhaseFlowEngineT)arg1) None :

Update the boundary condition to reflect changes of boundary pressure (needed typically after changing FlowEngine::bndCondValue). It is not sufficient to reflect changes of the type of boundary condition (FlowEngine::bndCondIsPressure), in such case re-triangulation or at least updating the linear system is needed (see FlowEngine::updateTriangulation and FlowEngine::updateLinearSystem). Conversely, the update is not necessary for changing the value of point-wise imposed pressure (FlowEngine::imposePressure)

property updateTriangulation

If true the medium is retriangulated. Can be switched on to force retriangulation after some events (else it will be true periodicaly based on FlowEngine::defTolerance and FlowEngine::meshUpdateInterval. Of course, it costs CPU time. Note that the new triangulation will start to be effectively used only after one iteration (i.e. O.run(2) gives a result with the new one, O.run(1) does not).

updateVolumes((TwoPhaseFlowEngineT)arg1) None :

update rates of volume change

property useSolver

Solver to use. 0:Gauss-Seidel, 3: Cholesky factorization (via Eigen3 interface), 4:multicore CPU or GPU accelerated CHOLMOD (without Eigen3), 1-2: undefined.

property viscosity

viscosity of the fluid

property viscousNormalBodyStress

compute normal viscous stress applied on each body

property viscousShear

compute viscous shear terms as developped by Donia Marzougui (FIXME: ref.)

property viscousShearBodyStress

compute shear viscous stress applied on each body

volume((TwoPhaseFlowEngineT)arg1[, (int)id=0]) float :

Returns the volume of Voronoi’s cell of a sphere.

property volumeCorrection

Volume correction factor (not user controlled. auto computed if FlowEngine::desiredPorosity != 0)

property volumeFactor

Factor used for simulating low porosity (for thermal considerations only) in high porosity DEM packings.

property wallIds

body ids of the boundaries (default values are ok only if aabbWalls are appended before spheres, i.e. numbered 0,…,5)

property wallThickness

Walls thickness

property waveAction

Allow sinusoidal pressure condition to simulate ocean waves

property xmax

See FlowEngine::xmin.

property xmin

Index of the boundary \(x_{min}\). This index is not equal the the id of the corresponding body in general, it may be used to access the corresponding attributes (e.g. flow.bndCondValue[flow.xmin], flow.wallId[flow.xmin],…).

property ymax

See FlowEngine::xmin.

property ymin

See FlowEngine::xmin.

property zmax

See FlowEngine::xmin.

property zmin

See FlowEngine::xmin.

class yade.wrapper.UnsaturatedEngine(inherits TwoPhaseFlowEngine TwoPhaseFlowEngineT PartialEngine Engine Serializable)

Preliminary version engine of a drainage model for unsaturated soils. Note:Air reservoir is on the top; water reservoir is on the bottom.(deprecated engine, use TwoPhaseFlowEngine instead)

OSI((TwoPhaseFlowEngineT)arg1) float :

Return the number of interactions only between spheres.

property accumulativeDeformationFlux

accumulative internal flux caused by deformation

property accumulativeFlux

accumulative influx of water

actionMergingAlgorithm((TwoPhaseFlowEngine)arg1) None :

apply triangulation, while maintaining saturation

actionTPF((TwoPhaseFlowEngine)arg1) None :

run 1 time step flow Engine

property airWaterInterfacialArea

Air-water interfacial area, based on the pore-unit assembly and regular-shaped pore units

property alphaBound

if 0, use an alphaBoundary condition where CGAL finds minimum alpha necessary for a single solid object. Any positive value will be used for the alpha. All negative values deactivate the functionality.

property alphaBoundValue

value of alpha constant pressure condition

property areaAveragedPressure

Air-water interfacial area averaged water pressure

avFlVelOnSph((TwoPhaseFlowEngineT)arg1, (int)idSph) object :

compute a sphere-centered average fluid velocity

property averageCavityPressure

true means the pressure in the cavity will be averaged each iteration.

averagePressure((TwoPhaseFlowEngineT)arg1) float :

Measure averaged pore pressure in the entire volume, the cells adjacent to the boundaries are ignored if includeBoundaries=False

averageSlicePressure((TwoPhaseFlowEngineT)arg1, (float)posY) float :

Measure slice-averaged pore pressure at height posY

averageVelocity((TwoPhaseFlowEngineT)arg1) Vector3 :

measure the mean velocity in the period

blockCell((TwoPhaseFlowEngineT)arg1, (int)id, (bool)blockPressure) None :

block cell ‘id’. The cell will be excluded from the fluid flow problem and the conductivity of all incident facets will be null. If blockPressure=False, deformation is reflected in the pressure, else it is constantly 0.

property blockHook

Python command to be run when remeshing. Anticipated usage: define blocked cells (see also FlowEngine.blockCell), or apply exotic types of boundary conditions which need to visit the newly built mesh

property bndCondIsPressure

defines the type of boundary condition for each side. True if pressure is imposed, False for no-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondIsTemperature

defines the type of boundary condition for each side of triangulation (used with ThermalEngine only). True if temperature is imposed, False for no heat-flux. Indexes can be retrieved with FlowEngine::xmin and friends.

property bndCondIsWaterReservoir

Boundary conditions, if bndCondIsPressure[] = True, is it air or water boundary condition? True is water reservoir

property bndCondValue

Imposed value of a boundary condition. Only applies if the boundary condition is imposed pressure, else the imposed flux is always zero presently (may be generalized to non-zero imposed fluxes in the future).

bodyNormalLubStress((TwoPhaseFlowEngineT)arg1, (int)idSph) Matrix3 :

Return the normal lubrication stress on sphere idSph.

bodyShearLubStress((TwoPhaseFlowEngineT)arg1, (int)idSph) Matrix3 :

Return the shear lubrication stress on sphere idSph.

property boundaryPressure

values defining pressure along x-axis for the top surface. See also FlowEngine::boundaryXPos

property boundaryUseMaxMin

If true (default value) bounding sphere is added as function of max/min sphere coord, if false as function of yade wall position

property boundaryVelocity

velocity on top boundary, only change it using FlowEngine::setBoundaryVel

property boundaryXPos

values of the x-coordinate for which pressure is defined. See also FlowEngine::boundaryPressure

property breakControlledRemesh

If true, remesh will occur everytime a break occurs in JCFpmPhys. Designed to increase accuracy and efficiency in hydraulic fracture simulations.

calculateResidualSaturation((TwoPhaseFlowEngine)arg1) None :

Calculate the residual saturation for each pore body

property cavityFactor

Permeability/viscosity for cavity cell neighbors (arbitrarily high to model triangulated fluid filled cavity).

property cavityFluidDensity

>0 means cavity compressibility model considers density changes instead of volume changes.

property cavityFlux

For adding flux to pressuremanaged cavity model (FlowEngine::controlCavityPressure). Negavite influx, postive outflux.

property centroidAverageWaterPressure

Water pressure based on centroid-corrected averaging, see Korteland et al. (2010) - what is the correct definition of average pressure?

checkLatticeNodeY((UnsaturatedEngine)arg1, (float)y) None :

Check the slice of lattice nodes for yNormal(y). 0: out of sphere; 1: inside of sphere.

checknoCache((UnsaturatedEngine)arg1) bool :

check noCache. (temporary function.)

cholmodStats((TwoPhaseFlowEngineT)arg1) None :

get statistics of cholmod solver activity

property clampKValues

If true, clamp local permeabilities in [minKdivKmean,maxKdivKmean]*globalK. This clamping can avoid singular values in the permeability matrix and may reduce numerical errors in the solve phase. It will also hide junk values if they exist, or bias all values in very heterogeneous problems. So, use this with care.

clearImposedFlux((TwoPhaseFlowEngineT)arg1) None :

Clear the list of points with flux imposed.

clearImposedPressure((TwoPhaseFlowEngineT)arg1) None :

Clear the list of points with pressure imposed.

clusterInvadePore((TwoPhaseFlowEngine)arg1, (int)cellId) object :

drain the pore identified by cellId and update the clusters accordingly.

clusterInvadePoreFast((TwoPhaseFlowEngine)arg1, (int)cellId) object :

drain the pore identified by cellId and update the clusters accordingly. This ‘fast’ version is faster and it also preserves interfaces through cluster splitting. OTOH it does not update entry Pc nor culsters volume (it could if needed)

clusterOutvadePore((TwoPhaseFlowEngine)arg1, (int)startingId, (int)imbibedId[, (int)index=-1]) object :

imbibe the pore identified by imbibedId and merge the newly connected clusters if it happens. startingId->imbibedId defines the throat through which imbibition occurs. Giving index of the facet in cluster::interfaces should speedup its removal

compTessVolumes((TwoPhaseFlowEngineT)arg1) None :

Like TesselationWrapper::computeVolumes()

computeCapillaryForce((TwoPhaseFlowEngine)arg1[, (bool)addForces=False[, (bool)permanently=False]]) None :

Compute capillary force. Optionaly add them to body forces, for current iteration or permanently.

property computeForceActivated

Activate capillary force computation. WARNING: turning off means capillary force is not computed at all, but the drainage can still work.

computeOnePhaseFlow((TwoPhaseFlowEngine)arg1) None :

compute pressure and fluxes in the W-phase

property controlCavityPressure

use full cavity flux and fluidbulkmodulus to control cavity as dynamic pressure (dirichlet) boundary condition.

property controlCavityVolumeChange

cavity imposes a volume change on neighbor cells (shouldnt be used with controlCavityPressure)

property convertClumps

If true the clumps will be temptatively converted into equivalent spheres in the triangulation, and clump members are skipped. Else clumps are ignored and spherical clump members are triangulated as independent bodies.

copyPoreDataToCells((TwoPhaseFlowEngine)arg1) None :

copy data from merged pore units back to grain-based tetrahedra, this should be done before exporting VTK files

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

property debug

Activate debug messages

property debugTPF

Print debuging messages two phase flow engine

property decoupleForces

If true, viscous and pressure forces are not imposed on particles. Useful for speeding up simulations in ultra-stiff cohesive materials.

property defTolerance

Cumulated deformation threshold for which retriangulation of pore space is performed. If negative, the triangulation update will occure with a fixed frequency on the basis of FlowEngine::meshUpdateInterval

property deformation

Boolean to indicate whether simulations of dynamic flow are withing a deformating packing or not. If true, change of void volume due to deformation is considered in flow computations.

property deltaTimeTruncation

truncation of time step, to avoid very small time steps during local imbibition, NOTE it does affect the mass conservation not set to 0

property desiredPorosity

Correct the cell volumes to reflect this desired porosity (not active by default (0)).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property doInterpolate

Force the interpolation of cell’s info while remeshing. By default, interpolation would be done only for compressible fluids. It can be forced with this flag.

property drainageFirst

If true, activate drainage first (initial saturated), then imbibition; if false, activate imbibition first (initial unsaturated), then drainage.

property dt

timestep [s]

property dtDynTPF

Parameter which stores the smallest time step, based on the residence time

edgeSize((TwoPhaseFlowEngineT)arg1) float :

Return the number of interactions.

emulateAction((TwoPhaseFlowEngineT)arg1) None :

get scene and run action (may be used to manipulate an engine outside the timestepping loop).

property entryMethodCorrection

Parameter that is used in computing entry pressure of a pore throat: P_ij = entryMethodCorrection * surfaceTension / radius_porethroat

property entryPressureMethod

integer to define the method used to determine the pore throat radii and the according entry pressures. 1)radius of entry pore throat based on MS-P method; 2) radius of the inscribed circle; 3) radius of the circle with equivalent surface area of the pore throat.

property eps

roughness defined as a fraction of particles size, giving the minimum distance between particles in the lubrication model.

property epsVolMax

Maximal absolute volumetric strain computed at each iteration. (auto-updated)

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

exportMatrix((TwoPhaseFlowEngineT)arg1[, (str)filename='matrix']) None :

Export system matrix to a file with all entries (even zeros will displayed).

exportTriplets((TwoPhaseFlowEngineT)arg1[, (str)filename='triplets']) None :

Export system matrix to a file with only non-zero entries.

property first

Controls the initialization/update phases

property firstDynTPF

this bool activated the initialization of the dynamic flow engine, such as merging and defining initial values

property fixTriUpdatePermInt

If positive, triangulation is fixed and DFNFlow trickPermeability is run according to the interval. Activating this automatically sets FlowEngine::meshUpdateInt and FlowEngine::defTolerance to -1 (never retriangulate).

property fixedAlpha

If true, a constant-sized alpha vertex will be placed exactly above each facet. If false, logic is used to improve cell sizes in concave regions.

property flatThreshold

If >=0, pore volumes below flatThreshold value are blocked from flow calc. Useful for compressible flow involving odd triangulations with some very flat pores.

property fluidBulkModulus

Bulk modulus of fluid (inverse of compressibility) K=-dP*V/dV [Pa]. Flow is compressible if fluidBulkModulus > 0, else incompressible.

property fluidCp

Heat capacity of fluid (for thermalEngine).

fluidForce((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the fluid force on sphere idSph.

property fluidRho

Density of fluid (for thermalEngine).

property fluxInViaWBC

Total water flux over water boundary conditions

property forceMetis

If true, METIS is used for matrix preconditioning, else Cholmod is free to choose the best method (which may be METIS to, depending on the matrix). See nmethods in Cholmod documentation

property fractionMinSaturationInvasion

Set the threshold saturation at which drainage can occur (Sthr = fractionMinSaturationInvasion), note that -1 implied the conventional definition of Sthr

getBoundaryFluidArea((TwoPhaseFlowEngineT)arg1, (int)boundary) float :

Get total fluid area associated with boundary defined by its body id.

getBoundaryFlux((TwoPhaseFlowEngineT)arg1, (int)boundary) float :

Get total flux through boundary defined by its body id.

Note

The flux may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such flux evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

getBoundaryVel((TwoPhaseFlowEngineT)arg1, (int)boundary) object :

Get total avg cell velocity associated with boundary defined by its body id.

getBoundaryVolume((TwoPhaseFlowEngineT)arg1, (int)arg2, (float)boundary) float :

Get total volume flowing through boundary defined by its body id in current timestep dt.

Note

The volume may be not zero even for no-flow condition. This artifact comes from cells which are incident to two or more boundaries (along the edges of the sample, typically). Such volume evaluation on impermeable boundary is just irrelevant, it does not imply that the boundary condition is not applied properly.

property getCHOLMODPerfTimings

Print CHOLMOD build, analyze, and factorize timings

getCavityDensity((TwoPhaseFlowEngineT)arg1) float :

Return the density of cavity fluid.

getCavityFlux((TwoPhaseFlowEngineT)arg1) float :

Return the flux through the edge of the cavity.

getCell((TwoPhaseFlowEngineT)arg1, (float)X, (float)Y, (float)Z) int :

get id of the cell containing (X,Y,Z).

getCell2((TwoPhaseFlowEngine)arg1, (float)arg2, (float)arg3, (float)pos) int :

get id of the cell containing (X,Y,Z).

getCellBarycenter((TwoPhaseFlowEngineT)arg1, (int)id) Vector3 :

get barycenter of cell ‘id’.

getCellCenter((TwoPhaseFlowEngineT)arg1, (int)id) Vector3 :

get voronoi center of cell ‘id’.

getCellEntrySaturation((TwoPhaseFlowEngine)arg1, (int)arg2) list :

get the entry saturation of each pore throat

getCellFlux((TwoPhaseFlowEngineT)arg1, (int)cond) float :

Get influx in cell associated to an imposed P (indexed using ‘cond’).

getCellFluxFromId((TwoPhaseFlowEngineT)arg1, (int)id) float :

Get influx in cell.

getCellHasInterface((TwoPhaseFlowEngine)arg1, (int)arg2) bool :

indicates whether a NW-W interface is present within the cell

getCellInSphereRadius((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get the radius of the inscribed sphere in a pore unit

getCellInvVoidVolume((TwoPhaseFlowEngineT)arg1, (int)id) float :

get the inverse of the cell volume for cell ‘id’ after pore volumes have been initialized and FlowEngine:iniVoidVolumes = True, or compressibility scheme active with FlowEngine::fluidBulkModulus.

getCellIsFictious((TwoPhaseFlowEngine)arg1, (int)arg2) bool :

Check the connection between pore and boundary. If true, pore throat connects the boundary.

getCellIsNWRes((TwoPhaseFlowEngine)arg1, (int)arg2) bool :

get status wrt ‘non-wetting reservoir’ state

getCellIsTrapNW((TwoPhaseFlowEngine)arg1, (int)arg2) bool :

get status wrt ‘trapped non-wetting phase’ state

getCellIsTrapW((TwoPhaseFlowEngine)arg1, (int)arg2) bool :

get status wrt ‘trapped wetting phase’ state

getCellIsWRes((TwoPhaseFlowEngine)arg1, (int)arg2) bool :

get status wrt ‘wetting reservoir’ state

getCellLabel((TwoPhaseFlowEngine)arg1, (int)arg2) int :

get cell label. 0 for NW-reservoir; 1 for W-reservoir; others for disconnected W-clusters.

getCellMergedID((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get the saturation of imbibition

getCellMergedVolume((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get the merged volume of pore space in each pore unit

getCellPImposed((TwoPhaseFlowEngineT)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed pressure.

getCellPorosity((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get the porosity of individual cells.

getCellPressure((TwoPhaseFlowEngineT)arg1, (int)id) float :

get pressure by cell ‘id’. Note: getting pressure at position (x,y,z) might be more usefull, see :yref`FlowEngine::getPorePressure`:

getCellSaturation((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get saturation of one pore

getCellTImposed((TwoPhaseFlowEngineT)arg1, (int)id) bool :

get the status of cell ‘id’ wrt imposed temperature.

getCellTemperature((TwoPhaseFlowEngineT)arg1, (int)id) float :

get pressure in cell ‘id’.

getCellThresholdSaturation((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get the saturation of imbibition

getCellVelocity((TwoPhaseFlowEngineT)arg1, (Vector3)pos) object :

Get relative cell velocity at position pos[0] pos [1] pos[2].

getCellVoidVolume((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get the volume of pore space in each pore unit

getCellVolume((TwoPhaseFlowEngine)arg1, (int)arg2) float :

get the volume of each cell

getClusters((TwoPhaseFlowEngine)arg1) list :

Get the list of clusters.

getConductivity((TwoPhaseFlowEngineT)arg1, (int)cellId, (int)throat) float :

get conductivity from cell and throat, with throat between 0 and 3 (same ordering as incident cells)

getConstrictions((TwoPhaseFlowEngineT)arg1[, (bool)all=True]) list :

Get the list of constriction radii (inscribed circle) for all finite facets (if all==True) or all facets not incident to a virtual bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres.

getConstrictionsFull((TwoPhaseFlowEngineT)arg1[, (bool)all=True]) list :

Get the list of constrictions (inscribed circle) for all finite facets (if all==True), or all facets not incident to a fictious bounding sphere (if all==False). When all facets are returned, negative radii denote facet incident to one or more fictious spheres. The constrictions are returned in the format {{cell1,cell2}{rad,nx,ny,nz}}

getCuboidSubdomainPorosity((UnsaturatedEngine)arg1, (Vector3)pos1, (Vector3)pos2, (bool)isSideBoundaryIncluded) float :

Get the porosity of cuboid subdomain defined by (pos1,pos2). If isSideBoundaryIncluded=false, the pores of side boundary are excluded in porosity calculating; if isSideBoundaryIncluded=true (only in isInvadeBoundary=true drainage mode), the pores of side boundary are included in porosity calculating.

getCuboidSubdomainSaturation((UnsaturatedEngine)arg1, (Vector3)pos1, (Vector3)pos2, (bool)isSideBoundaryIncluded) float :

Get saturation of cuboid subdomain defined by (pos1,pos2). If isSideBoundaryIncluded=false, the pores of side boundary are excluded in saturation calculating; if isSideBoundaryIncluded=true (only in isInvadeBoundary=true drainage mode), the pores of side boundary are included in saturation calculating.

getDiffusionCoeff((TwoPhaseFlowEngineT)arg1, (int)cellId, (int)throat) float :

get the ratio of throat cross-sectional area and distance between two cells

getEffRcByPosRadius((TwoPhaseFlowEngine)arg1, (Vector3)position1, (float)radius1, (Vector3)position2, (float)radius2, (Vector3)position3, (float)radius3) float :

get effective radius by three spheres position and radius.(inscribed sphere)

getEquivalentCompressibility((TwoPhaseFlowEngineT)arg1) float :

Return the equivalent compressibility used for modeling air water mixture in cavity.

getIncidentCells((TwoPhaseFlowEngineT)arg1, (int)vertexId) list :

get ids of all cells of which vertexId is a vertex. Typical usage is for getting cells indident to a boundary.

getInvadeDepth((UnsaturatedEngine)arg1) float :

Get NW-phase invasion depth. (the distance from NW-reservoir to front of NW-W interface.)

getMSPRcByPosRadius((TwoPhaseFlowEngine)arg1, (Vector3)position1, (float)radius1, (Vector3)position2, (float)radius2, (Vector3)position3, (float)radius3) float :

get entry radius wrt MSP method by three spheres position and radius.

getMaxImbibitionPc((TwoPhaseFlowEngine)arg1) float :

Get the maximum entry capillary pressure for the next imbibition step.

getMinDrainagePc((TwoPhaseFlowEngine)arg1) float :

Get the minimum entry capillary pressure for the next drainage step.

getNeighbors((TwoPhaseFlowEngine)arg1, (int)id[, (bool)withInfCell=True]) list :

get 4 neigboring cells, optionally exclude the infinite cells if withInfCell is False

getPorePressure((TwoPhaseFlowEngineT)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getPoreTemperature((TwoPhaseFlowEngineT)arg1, (Vector3)pos) float :

Measure pore pressure in position pos[0],pos[1],pos[2]

getPoreThroatRadius((TwoPhaseFlowEngine)arg1, (int)cell1_ID, (int)cell2_ID) float :

get the pore throat radius between cell1 and cell2.

getPoreThroatRadiusList((TwoPhaseFlowEngine)arg1, (int)cell_ID) list :

get 4 pore throat radii of a cell.

getPotentialPendularSpheresPair((TwoPhaseFlowEngine)arg1) list :

Get the list of sphere ID pairs of potential pendular liquid bridge.

property getQuantitiesUpdateCont

Continuous update of various macro-scale quantities or not. Note that the updating quantities is computationally expensive

getSaturation((TwoPhaseFlowEngine)arg1, (bool)isSideBoundaryIncluded) float :

Get saturation of entire packing. If isSideBoundaryIncluded=false (default), the pores of side boundary are excluded in saturation calculating; if isSideBoundaryIncluded=true (only in isInvadeBoundary=true drainage mode), the pores of side boundary are included in saturation calculating.

getSolidSurfaceAreaPerParticle((TwoPhaseFlowEngine)arg1, (int)cell_ID) list :

get solid area inside a packing of particles

getSpecificInterfacialArea((UnsaturatedEngine)arg1) float :

get specific interfacial area (defined as the amount of fluid-fluid interfacial area per unit volume pf the porous medium).

getSphericalSubdomainSaturation((UnsaturatedEngine)arg1, (Vector3)pos, (float)radius) float :

Get saturation of spherical subdomain defined by (pos, radius). The subdomain exclude boundary pores.

getVertices((TwoPhaseFlowEngineT)arg1, (int)id) list :

get the vertices of a cell

getWindowsSaturation((UnsaturatedEngine)arg1, (int)windowsID, (bool)isSideBoundaryIncluded) float :

get saturation of subdomain with windowsID. If isSideBoundaryIncluded=false (default), the pores of side boundary are excluded in saturation calculating; if isSideBoundaryIncluded=true (only in isInvadeBoundary=true drainage mode), the pores of side boundary are included in saturation calculating.

property idOffset

If the bounding walls of the fluid mesh are not walls of the scene (i.e. are not elements of O.bodies), the offset should be set equal to the size of O.bodies. If the bounding walls are bodies of the scene but are not numbered as 0-5 then offset should be the number of bodies comming before the walls. Set offset<0 to get it set equal to O.bodies.size(), it will also update FlowEngine::wallIds.

property ids

Ids list of bodies affected by this PartialEngine.

property ignoredBody

DEPRECATED, USE MASK - Id of a sphere to exclude from the triangulation.)

imposeCavity((TwoPhaseFlowEngineT)arg1, (Vector3)pos) int :

Cell with location ‘pos’ participates in a cavity (high conductivity and no volume factoring). The index of the condition is returned (for multiple imposed pressures at different points).

imposeDeformationFluxTPF((TwoPhaseFlowEngine)arg1) None :

Impose fluxes defined in dvTPF

imposeFlux((TwoPhaseFlowEngineT)arg1, (Vector3)pos, (float)p) None :

Impose a flux in cell located at ‘pos’ (i.e. add a source term in the flow problem). Outflux positive, influx negative.

imposePressure((TwoPhaseFlowEngineT)arg1, (Vector3)pos, (float)p) int :

Impose pressure in cell of location ‘pos’. The index of the condition is returned (for multiple imposed pressures at different points).

imposePressureFromId((TwoPhaseFlowEngineT)arg1, (int)id, (float)p) int :

Impose pressure in cell of index ‘id’ (after remeshing the same condition will apply for the same location, regardless of what the new cell index is at this location). The index of the condition itself is returned (for multiple imposed pressures at different points).

property iniVoidVolumes

activate the computation of the inverse of the initial void volumes in each cell when pore volumes are initialized.

property initialPC

Initial capillary pressure of the water-air inside the packing

property initialWetting

Initial wetting saturated (=true) or non-wetting saturated (=false)

initialization((TwoPhaseFlowEngine)arg1) None :

Initialize invasion setup. Build network, compute pore geometry info and initialize reservoir boundary conditions.

initializeCellWindowsID((UnsaturatedEngine)arg1) None :

Initialize cell windows index. A temporary function for comparison with experiments, will delete soon

initializeVolumes((TwoPhaseFlowEngineT)arg1) None :

initialize pore volumes.

invasion((TwoPhaseFlowEngine)arg1) None :

Run the drainage invasion.

property isActivated

Activates Flow Engine

property isCellLabelActivated

Activate cell labels for marking disconnected wetting clusters. NW-reservoir label 0; W-reservoir label 1; disconnected W-clusters label from 2.

isCellNeighbor((TwoPhaseFlowEngine)arg1, (int)cell1_ID, (int)cell2_ID) bool :

check if cell1 and cell2 are neigbors.

property isDrainageActivated

Activates drainage.

property isImbibitionActivated

Activates imbibition.

property isInvadeBoundary

Invasion side boundary condition. If True, pores of side boundary can be invaded; if False, the pore throats connecting side boundary are closed, those pores are excluded in saturation calculation.

property isPhaseTrapped

If True, both phases can be entrapped by the other, which would correspond to snap-off. If false, both phases are always connected to their reservoirs, thus no snap-off.

property iterationTPF

Iteration number

property keepTriangulation

this bool activated triangulation or not during initialization

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property mask

If mask defined, only bodies with corresponding groupMask will be affected by this engine. If 0, all bodies will be affected.

property maxIDMergedCells

maximum number of merged ID, this is computed in mergeCells()

property maxKdivKmean

define the max K value (see FlowEngine::clampKValues)

property maximumRatioPoreThroatoverPoreBody

maximum ratio of pore throat radius over pore body radius, this is used during merging of tetrahedra.

property meanKStat

report the local permeabilities’ correction

mergeCells((TwoPhaseFlowEngine)arg1) None :

Extract the pore network of the granular material

property meshUpdateInterval

Maximum number of timesteps between re-triangulation events (a negative value will never re-triangulate). See also FlowEngine::defTolerance.

metisUsed((TwoPhaseFlowEngineT)arg1) bool :

check wether metis lib is effectively used

property minKdivKmean

define the min K value (see FlowEngine::clampKValues)

property minimumPorosity

value used to limit the allowable minimum porosity for pore volume calculations. Particularly useful if very small volumes are impacting stability

property modelRunName

Name of simulation, to be implemented into output files

property multithread

Build triangulation and factorize in the background (multi-thread mode)

nCells((TwoPhaseFlowEngineT)arg1) int :

get the total number of finite cells in the triangulation.

normalLubForce((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal lubrication force on sphere idSph.

property normalLubrication

compute normal lubrication force as developped by Brule

normalVect((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal vector between particles.

normalVelocity((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the normal velocity of the interaction.

property numFactorizeThreads

number of openblas threads in the factorization phase

property numSolveThreads

number of openblas threads in the solve phase.

property numberOfPores

Number of pores (i.e. number of tetrahedra, but compensated for merged tetrahedra

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

onlySpheresInteractions((TwoPhaseFlowEngineT)arg1, (int)interaction) int :

Return the id of the interaction only between spheres.

property pZero

The value used for initializing pore pressure. It is useless for incompressible fluid, but important for compressible model.

property permeabilityFactor

Permability multiplier (\(m\)): \(m=1\) (default) attempts to predicty the actual hydraulic conductivity using a Poiseuille equation; \(m>0\) multiplies the default values by \(m\); \(m<0\) defines the conductivity independently of particle size and viscosity as if the material was a homogeneous continuum of conductivity \(-m\)

property permeabilityMap

Enable/disable stocking of average permeability scalar in cell infos.

property phiZero

if >0, considers water aircontent impact on fluid compressibility.

property porosity

Porosity computed at each retriangulation (auto-updated)

property pressureForce

compute the pressure field and associated fluid forces. WARNING: turning off means fluid flow is not computed at all.

pressureProfile((TwoPhaseFlowEngineT)arg1, (float)wallUpY, (float)wallDownY) None :

Measure pore pressure in 6 equally-spaced points along the height of the sample

property primaryTPF

Boolean to indicate whether the initial conditions are for primary drainage of imbibition (dictated by drainageFirst) or secondary drainage or imbibition. Note that during simulations, a switch from drainage to imbibition or vise versa can easily be made by changing waterBoundaryPressure

printSomething((UnsaturatedEngine)arg1) None :

print debug.

printVertices((TwoPhaseFlowEngineT)arg1) None :

Export vertex positions and types

property pumpTorque

Compute pump torque applied on particles

reTriangulateSpheres((TwoPhaseFlowEngine)arg1) None :

apply triangulation, while maintaining saturation

property recursiveInvasion

If true the invasion stops only when no entry pc is less than current capillary pressure, implying simultaneous invasion of many pores. Else only one pore invasion per invasion step.

property relax

Gauss-Seidel relaxation

property remesh

update triangulation? – YET TO BE IMPLEMENTED

resetLinearSystem((TwoPhaseFlowEngineT)arg1) None :

trigger rebuild of the linear system while keeping the same triangulation

property safetyFactorTimeStep

Safey coefficient for time step

savePhaseVtk((TwoPhaseFlowEngine)arg1[, (str)folder='./phaseVtk'[, (bool)withBoundaries=True]]) None :

Save the saturation of local pores in vtk format. Sw(NW-pore)=0, Sw(W-pore)=1. Specify a folder name for output.

savePoreNetwork((TwoPhaseFlowEngine)arg1[, (str)folder='./poreNetwork']) None :

Extract the pore network of the granular material (i.e. based on triangulation of the pore space

saveVtk((TwoPhaseFlowEngineT)arg1[, (str)folder='./VTK'[, (bool)withBoundaries=False]]) None :

Save pressure field in vtk format. Specify a folder name for output. The cells adjacent to the bounding spheres are generated conditionally based on FlowEngine::withBoundaries (not compatible with periodic boundaries)

setBoundaryNormal((TwoPhaseFlowEngineT)arg1, (int)arg2, (Vector3)arg3) None :

define the unit outward-pointing normal of a boundary (0<=index<=5).

setCellDeltaVolume((TwoPhaseFlowEngine)arg1, (int)id, (float)value) None :

get id of the cell containing (X,Y,Z).

setCellHasInterface((TwoPhaseFlowEngine)arg1, (int)arg2, (bool)arg3) None :

change wheter a cell has a NW-W interface

setCellHasInterface( (TwoPhaseFlowEngine)arg1, (int)arg2, (bool)arg3) -> None :

change wheter a cell has a NW-W interface

setCellIsNWRes((TwoPhaseFlowEngine)arg1, (int)arg2, (bool)arg3) None :

set status whether ‘wetting reservoir’ state

setCellIsWRes((TwoPhaseFlowEngine)arg1, (int)arg2, (bool)arg3) None :

set status whether ‘wetting reservoir’ state

setCellPImposed((TwoPhaseFlowEngineT)arg1, (int)id, (bool)pImposed) None :

make cell ‘id’ assignable with imposed pressure.

setCellPressure((TwoPhaseFlowEngineT)arg1, (int)id, (float)pressure) None :

set pressure in cell ‘id’.

setCellSaturation((TwoPhaseFlowEngine)arg1, (int)arg2, (float)arg3) None :

change saturation of one pore

setCellTImposed((TwoPhaseFlowEngineT)arg1, (int)id, (bool)tImposed) None :

make cell ‘id’ assignable with imposed temperature.

setCellTemperature((TwoPhaseFlowEngineT)arg1, (int)id, (float)temperature) None :

set temperature in cell ‘id’.

property setFractionParticles

Correction fraction for swelling of particles by mismatch of surface area of particles with those from actual surface area in pore units

setImposedPressure((TwoPhaseFlowEngineT)arg1, (int)cond, (float)p) None :

Set pressure value at the point indexed ‘cond’.

setPoreBodyRadius((TwoPhaseFlowEngine)arg1, (int)arg2, (float)arg3) None :

set the entry pore body radius.

setPoreThroatRadius((TwoPhaseFlowEngine)arg1, (int)cell1_ID, (int)cell2_ID, (float)radius) None :

set the pore throat radius between cell1 and cell2.

shearLubForce((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear lubrication force on sphere idSph.

shearLubTorque((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear lubrication torque on sphere idSph.

property shearLubrication

compute shear lubrication force as developped by Brule (FIXME: ref.)

shearVelocity((TwoPhaseFlowEngineT)arg1, (int)idSph) Vector3 :

Return the shear velocity of the interaction.

property simpleWaterPressure

Water pressure based on averaging over pore volume

property sineAverage

Pressure value (average) when sinusoidal pressure is applied

property sineMagnitude

Pressure value (amplitude) when sinusoidal pressure is applied (p )

property slipBoundary

Controls friction condition on lateral walls

property solvePressureSwitch

solve for pressure during actionTPF()

property stiffness

equivalent contact stiffness used in the lubrication model

property stopSimulation

Boolean to indicate that dynamic flow simulations cannot find a solution (or next time step). If True, stop simulations

surfaceDistanceParticle((TwoPhaseFlowEngineT)arg1, (int)interaction) float :

Return the distance between particles.

surfaceSolidThroatInPore((TwoPhaseFlowEngineT)arg1, (int)cellId, (int)throatIndex) float :

returns solid area in the throat (index 0-3), keeping only that part of the throat in cell.

property surfaceTension

Water Surface Tension in contact with air at 20 Degrees Celsius is: 0.0728(N/m)

property swelling

If true, include swelling of particles during TPF computations

property tZero

The value used for initializing pore temperatures in thermalEngine.

property tempDependentViscosity

boolean to vary viscosity (ultimately cell permeability) with cell temperature. Linear model for viscosity b/w 20-70 degC. If true, kFactor must also be set negative, and becomes the darcy permeability.

property thermalBndCondValue

Imposed temperature boundary condition value for the cells in the triangulation (used with ThermalEngine only).

property thermalEngine

activate thermalEngine within FlowEngine.

property thermalPorosity

>0 means the void volume space will be factored by thermalPorosity for pore internal energy considerations.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

property tolerance

Gauss-Seidel tolerance

property totalWaterVolume

total watervolume

property truncationPrecision

threshold at which a saturation is truncated

property twistTorque

Compute twist torque applied on particles

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

updateBCs((TwoPhaseFlowEngineT)arg1) None :

Update the boundary condition to reflect changes of boundary pressure (needed typically after changing FlowEngine::bndCondValue). It is not sufficient to reflect changes of the type of boundary condition (FlowEngine::bndCondIsPressure), in such case re-triangulation or at least updating the linear system is needed (see FlowEngine::updateTriangulation and FlowEngine::updateLinearSystem). Conversely, the update is not necessary for changing the value of point-wise imposed pressure (FlowEngine::imposePressure)

updatePressure((TwoPhaseFlowEngine)arg1) None :

Apply the values of FlowEngine::bndCondValue to the boundary cells. Note: boundary pressure will be updated automatically in many cases, this function is for some low-level manipulations.

property updateTriangulation

If true the medium is retriangulated. Can be switched on to force retriangulation after some events (else it will be true periodicaly based on FlowEngine::defTolerance and FlowEngine::meshUpdateInterval. Of course, it costs CPU time. Note that the new triangulation will start to be effectively used only after one iteration (i.e. O.run(2) gives a result with the new one, O.run(1) does not).

updateVolumes((TwoPhaseFlowEngineT)arg1) None :

update rates of volume change

property useFastInvasion

use fast version of invasion

property useSolver

Solver to use. 0:Gauss-Seidel, 3: Cholesky factorization (via Eigen3 interface), 4:multicore CPU or GPU accelerated CHOLMOD (without Eigen3), 1-2: undefined.

property viscosity

viscosity of the fluid

property viscousNormalBodyStress

compute normal viscous stress applied on each body

property viscousShear

compute viscous shear terms as developped by Donia Marzougui (FIXME: ref.)

property viscousShearBodyStress

compute shear viscous stress applied on each body

property voidVolume

total void volume, excluding boundary cells

volume((TwoPhaseFlowEngineT)arg1[, (int)id=0]) float :

Returns the volume of Voronoi’s cell of a sphere.

property volumeCorrection

Volume correction factor (not user controlled. auto computed if FlowEngine::desiredPorosity != 0)

property volumeFactor

Factor used for simulating low porosity (for thermal considerations only) in high porosity DEM packings.

property wallIds

body ids of the boundaries (default values are ok only if aabbWalls are appended before spheres, i.e. numbered 0,…,5)

property wallThickness

Walls thickness

property waterBoundaryPressure

Water pressure at boundary used in computations, is set automaticaly, but this value can be used to change water pressure during simulations

property waterPressure

Volume-averaged water pressure

property waterPressurePartiallySatPores

water pressure based on the volume-averaged water pressure in partially-saturated pore units (i.e. pore units having an interface)

property waterSaturation

Water saturation, excluding the boundary cells

property waterVolumeTruncatedLost

Water volume that has been truncated.

property waveAction

Allow sinusoidal pressure condition to simulate ocean waves

property windowsNo

Number of genrated windows(or zoomed samples).

property xmax

See FlowEngine::xmin.

property xmin

Index of the boundary \(x_{min}\). This index is not equal the the id of the corresponding body in general, it may be used to access the corresponding attributes (e.g. flow.bndCondValue[flow.xmin], flow.wallId[flow.xmin],…).

property ymax

See FlowEngine::xmin.

property ymin

See FlowEngine::xmin.

property zmax

See FlowEngine::xmin.

property zmin

See FlowEngine::xmin.

Dispatchers

digraph Dispatcher {
        rankdir=RL;
        margin="0.2,0.05";
        "Dispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Dispatcher"];
        "GlStateDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GlStateDispatcher"];
        "GlStateDispatcher" -> "Dispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "BoundDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#yade.wrapper.BoundDispatcher"];
        "BoundDispatcher" -> "Dispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "GlShapeDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GlShapeDispatcher"];
        "GlShapeDispatcher" -> "Dispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "GlBoundDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GlBoundDispatcher"];
        "GlBoundDispatcher" -> "Dispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "InternalForceDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#yade.wrapper.InternalForceDispatcher"];
        "InternalForceDispatcher" -> "Dispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "IGeomDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#yade.wrapper.IGeomDispatcher"];
        "IGeomDispatcher" -> "Dispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "LawDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#yade.wrapper.LawDispatcher"];
        "LawDispatcher" -> "Dispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "GlIPhysDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GlIPhysDispatcher"];
        "GlIPhysDispatcher" -> "Dispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "IPhysDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#yade.wrapper.IPhysDispatcher"];
        "IPhysDispatcher" -> "Dispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "GlIGeomDispatcher" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GlIGeomDispatcher"];
        "GlIGeomDispatcher" -> "Dispatcher" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of Dispatcher, gray dashed classes are discussed in their own sections: BoundDispatcher, InternalForceDispatcher, IGeomDispatcher, LawDispatcher, IPhysDispatcher.

class yade.wrapper.Dispatcher(inherits Engine Serializable)

Engine dispatching control to its associated functors, based on types of argument it receives. This abstract base class provides no functionality in itself.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GlBoundDispatcher(inherits Dispatcher Engine Serializable)

Dispatcher calling functors based on received argument type(s).

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispFunctor((GlBoundDispatcher)arg1, (Bound)arg2) GlBoundFunctor :

Return functor that would be dispatched for given argument(s); None if no dispatch; ambiguous dispatch throws.

dispMatrix((GlBoundDispatcher)arg1[, (bool)names=True]) dict :

Return dictionary with contents of the dispatch matrix.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property functors

Functors associated with this dispatcher.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GlIGeomDispatcher(inherits Dispatcher Engine Serializable)

Dispatcher calling functors based on received argument type(s).

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispFunctor((GlIGeomDispatcher)arg1, (IGeom)arg2) GlIGeomFunctor :

Return functor that would be dispatched for given argument(s); None if no dispatch; ambiguous dispatch throws.

dispMatrix((GlIGeomDispatcher)arg1[, (bool)names=True]) dict :

Return dictionary with contents of the dispatch matrix.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property functors

Functors associated with this dispatcher.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GlIPhysDispatcher(inherits Dispatcher Engine Serializable)

Dispatcher calling functors based on received argument type(s).

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispFunctor((GlIPhysDispatcher)arg1, (IPhys)arg2) GlIPhysFunctor :

Return functor that would be dispatched for given argument(s); None if no dispatch; ambiguous dispatch throws.

dispMatrix((GlIPhysDispatcher)arg1[, (bool)names=True]) dict :

Return dictionary with contents of the dispatch matrix.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property functors

Functors associated with this dispatcher.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GlShapeDispatcher(inherits Dispatcher Engine Serializable)

Dispatcher calling functors based on received argument type(s).

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispFunctor((GlShapeDispatcher)arg1, (Shape)arg2) GlShapeFunctor :

Return functor that would be dispatched for given argument(s); None if no dispatch; ambiguous dispatch throws.

dispMatrix((GlShapeDispatcher)arg1[, (bool)names=True]) dict :

Return dictionary with contents of the dispatch matrix.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property functors

Functors associated with this dispatcher.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GlStateDispatcher(inherits Dispatcher Engine Serializable)

Dispatcher calling functors based on received argument type(s).

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispFunctor((GlStateDispatcher)arg1, (State)arg2) GlStateFunctor :

Return functor that would be dispatched for given argument(s); None if no dispatch; ambiguous dispatch throws.

dispMatrix((GlStateDispatcher)arg1[, (bool)names=True]) dict :

Return dictionary with contents of the dispatch matrix.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property functors

Functors associated with this dispatcher.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

Functors

digraph Functor {
        rankdir=RL;
        margin="0.2,0.05";
        "Functor" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Functor"];
        "GlIPhysFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#inheritancegraphgliphysfunctor"];
        "GlIPhysFunctor" -> "Functor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "GlShapeFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#inheritancegraphglshapefunctor"];
        "GlShapeFunctor" -> "Functor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "IPhysFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#inheritancegraphiphysfunctor"];
        "IPhysFunctor" -> "Functor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "BoundFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#inheritancegraphboundfunctor"];
        "BoundFunctor" -> "Functor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "LawFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#inheritancegraphlawfunctor"];
        "LawFunctor" -> "Functor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "GlStateFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#yade.wrapper.GlStateFunctor"];
        "GlStateFunctor" -> "Functor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "GlBoundFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#inheritancegraphglboundfunctor"];
        "GlBoundFunctor" -> "Functor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "IGeomFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#inheritancegraphigeomfunctor"];
        "IGeomFunctor" -> "Functor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "GlIGeomFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#inheritancegraphgligeomfunctor"];
        "GlIGeomFunctor" -> "Functor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "InternalForceFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),filled,dashed",fillcolor=grey,height=0.2,URL="yade.wrapper.html#inheritancegraphinternalforcefunctor"];
        "InternalForceFunctor" -> "Functor" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of Functor, gray dashed classes are discussed in their own sections: GlIPhysFunctor, GlShapeFunctor, IPhysFunctor, BoundFunctor, LawFunctor, GlStateFunctor, GlBoundFunctor, IGeomFunctor, GlIGeomFunctor, InternalForceFunctor.

class yade.wrapper.Functor(inherits Serializable)

Function-like object that is called by Dispatcher, if types of arguments match those the Functor declares to accept.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

Bounding volume creation

BoundFunctor

digraph BoundFunctor {
        rankdir=RL;
        margin="0.2,0.05";
        "BoundFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.BoundFunctor"];
        "Bo1_DeformableElement_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_DeformableElement_Aabb"];
        "Bo1_DeformableElement_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Bo1_ChainedCylinder_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_ChainedCylinder_Aabb"];
        "Bo1_ChainedCylinder_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Bo1_Wall_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_Wall_Aabb"];
        "Bo1_Wall_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Bo1_Subdomain_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_Subdomain_Aabb"];
        "Bo1_Subdomain_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Bo1_PFacet_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_PFacet_Aabb"];
        "Bo1_PFacet_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Bo1_Sphere_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_Sphere_Aabb"];
        "Bo1_Sphere_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Bo1_FluidDomainBbox_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_FluidDomainBbox_Aabb"];
        "Bo1_FluidDomainBbox_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Bo1_Polyhedra_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_Polyhedra_Aabb"];
        "Bo1_Polyhedra_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Bo1_Cylinder_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_Cylinder_Aabb"];
        "Bo1_Cylinder_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Bo1_LevelSet_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_LevelSet_Aabb"];
        "Bo1_LevelSet_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Bo1_Tetra_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_Tetra_Aabb"];
        "Bo1_Tetra_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Bo1_Node_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_Node_Aabb"];
        "Bo1_Node_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PotentialParticle2AABB" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PotentialParticle2AABB"];
        "PotentialParticle2AABB" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Bo1_GridConnection_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_GridConnection_Aabb"];
        "Bo1_GridConnection_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Bo1_Box_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_Box_Aabb"];
        "Bo1_Box_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Bo1_Facet_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Bo1_Facet_Aabb"];
        "Bo1_Facet_Aabb" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "PotentialBlock2AABB" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.PotentialBlock2AABB"];
        "PotentialBlock2AABB" -> "BoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of BoundFunctor.

class yade.wrapper.BoundFunctor(inherits Functor Serializable)

Functor for creating/updating Body::bound.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_Box_Aabb(inherits BoundFunctor Functor Serializable)

Create/update an Aabb of a Box.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_ChainedCylinder_Aabb(inherits BoundFunctor Functor Serializable)

Functor creating Aabb from ChainedCylinder.

property aabbEnlargeFactor

Relative enlargement of the bounding box; deactivated if negative.

Note

This attribute is used to create distant interaction, but is only meaningful with an IGeomFunctor which will not simply discard such interactions: Ig2_Cylinder_Cylinder_ScGeom::interactionDetectionFactor should have the same value as aabbEnlargeFactor.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_Cylinder_Aabb(inherits BoundFunctor Functor Serializable)

Functor creating Aabb from Cylinder.

property aabbEnlargeFactor

Relative enlargement of the bounding box; deactivated if negative.

Note

This attribute is used to create distant interaction, but is only meaningful with an IGeomFunctor which will not simply discard such interactions: Ig2_Cylinder_Cylinder_ScGeom::interactionDetectionFactor should have the same value as aabbEnlargeFactor.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_DeformableElement_Aabb(inherits BoundFunctor Functor Serializable)

Functor creating Aabb from DeformableElement.

property aabbEnlargeFactor

Relative enlargement of the bounding box; deactivated if negative.

Note

This attribute is used to create distant interaction, but is only meaningful with an IGeomFunctor which will not simply discard such interactions: Ig2_Sphere_Sphere_ScGeom::interactionDetectionFactor should have the same value as aabbEnlargeFactor.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_Facet_Aabb(inherits BoundFunctor Functor Serializable)

Creates/updates an Aabb of a Facet.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_FluidDomainBbox_Aabb(inherits BoundFunctor Functor Serializable)

creates/updates an Aabb of a FluidDomainBbox.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_GridConnection_Aabb(inherits BoundFunctor Functor Serializable)

Functor creating Aabb from a GridConnection.

property aabbEnlargeFactor

Relative enlargement of the bounding box; deactivated if negative.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_LevelSet_Aabb(inherits BoundFunctor Functor Serializable)

Creates/updates an Aabb of a LevelSet

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_Node_Aabb(inherits BoundFunctor Functor Serializable)

Functor creating Aabb from Node.

property aabbEnlargeFactor

Relative enlargement of the bounding box; deactivated if negative.

Note

This attribute is used to create distant interaction, but is only meaningful with an IGeomFunctor which will not simply discard such interactions: Ig2_Sphere_Sphere_ScGeom::interactionDetectionFactor should have the same value as aabbEnlargeFactor.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_PFacet_Aabb(inherits BoundFunctor Functor Serializable)

Functor creating Aabb from a PFacet.

property aabbEnlargeFactor

Relative enlargement of the bounding box; deactivated if negative.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_Polyhedra_Aabb(inherits BoundFunctor Functor Serializable)

Create/update Aabb of a Polyhedra

property aabbEnlargeFactor

see Bo1_Sphere_Aabb.aabbEnlargeFactor

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_Sphere_Aabb(inherits BoundFunctor Functor Serializable)

Functor creating Aabb from Sphere.

property aabbEnlargeFactor

Relative enlargement of the bounding box; deactivated if negative.

Note

This attribute is used to create distant interaction, but is only meaningful with an IGeomFunctor which will not simply discard such interactions: Ig2_Sphere_Sphere_ScGeom::interactionDetectionFactor should have the same value as aabbEnlargeFactor.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_Subdomain_Aabb(inherits BoundFunctor Functor Serializable)

Creates/updates an Aabb of a Subdomain (mpi parallel simulations).

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_Tetra_Aabb(inherits BoundFunctor Functor Serializable)

Create/update Aabb of a Tetra

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Bo1_Wall_Aabb(inherits BoundFunctor Functor Serializable)

Creates/updates an Aabb of a Wall

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.PotentialBlock2AABB(inherits BoundFunctor Functor Serializable)

Functor creating Aabb from PotentialBlock.

property aabbEnlargeFactor

Relative enlargement of the bounding box; deactivated if negative.

Note

This attribute is used to create distant interaction, but is only meaningful with an IGeomFunctor which will not simply discard such interactions: Ig2_Sphere_Sphere_ScGeom::interactionDetectionFactor should have the same value as aabbEnlargeFactor.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.PotentialParticle2AABB(inherits BoundFunctor Functor Serializable)

EXPERIMENTAL. Functor creating Aabb from PotentialParticle.

property aabbEnlargeFactor

see Sphere2AABB.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

BoundDispatcher

class yade.wrapper.BoundDispatcher(inherits Dispatcher Engine Serializable)

Dispatcher calling functors based on received argument type(s).

property activated

Whether the engine is activated (only should be changed by the collider)

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispFunctor((BoundDispatcher)arg1, (Shape)arg2) BoundFunctor :

Return functor that would be dispatched for given argument(s); None if no dispatch; ambiguous dispatch throws.

dispMatrix((BoundDispatcher)arg1[, (bool)names=True]) dict :

Return dictionary with contents of the dispatch matrix.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property functors

Functors associated with this dispatcher.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property minSweepDistFactor

Minimal distance by which enlarge all bounding boxes; superseeds computed value of sweepDist when lower that (minSweepDistFactor x sweepDist). Updated by the collider. (auto-updated).

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property sweepDist

Distance by which enlarge all bounding boxes, to prevent collider from being run at every step (only should be changed by the collider).

property targetInterv

see InsertionSortCollider::targetInterv (auto-updated)

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property updatingDispFactor

see InsertionSortCollider::updatingDispFactor (auto-updated)

Interaction Geometry creation

IGeomFunctor

digraph IGeomFunctor {
        rankdir=RL;
        margin="0.2,0.05";
        "IGeomFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.IGeomFunctor"];
        "Ig2_Polyhedra_Polyhedra_PolyhedraGeomOrScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Polyhedra_Polyhedra_PolyhedraGeomOrScGeom"];
        "Ig2_Polyhedra_Polyhedra_PolyhedraGeomOrScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Wall_LevelSet_VolumeGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Wall_LevelSet_VolumeGeom"];
        "Ig2_Wall_LevelSet_VolumeGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Facet_Sphere_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Facet_Sphere_ScGeom"];
        "Ig2_Facet_Sphere_ScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Tetra_Tetra_TTetraSimpleGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Tetra_Tetra_TTetraSimpleGeom"];
        "Ig2_Tetra_Tetra_TTetraSimpleGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_LevelSet_LevelSet_VolumeGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_LevelSet_LevelSet_VolumeGeom"];
        "Ig2_LevelSet_LevelSet_VolumeGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Sphere_LevelSet_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Sphere_LevelSet_ScGeom"];
        "Ig2_Sphere_LevelSet_ScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_PFacet_PFacet_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_PFacet_PFacet_ScGeom"];
        "Ig2_PFacet_PFacet_ScGeom" -> "Ig2_Sphere_PFacet_ScGridCoGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Polyhedra_Polyhedra_PolyhedraGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Polyhedra_Polyhedra_PolyhedraGeom"];
        "Ig2_Polyhedra_Polyhedra_PolyhedraGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_LevelSet_LevelSet_MultiScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_LevelSet_LevelSet_MultiScGeom"];
        "Ig2_LevelSet_LevelSet_MultiScGeom" -> "Ig2_LevelSet_LevelSet_ScGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Polyhedra_Polyhedra_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Polyhedra_Polyhedra_ScGeom"];
        "Ig2_Polyhedra_Polyhedra_ScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Box_Sphere_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Box_Sphere_ScGeom"];
        "Ig2_Box_Sphere_ScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Wall_LevelSet_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Wall_LevelSet_ScGeom"];
        "Ig2_Wall_LevelSet_ScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_GridNode_GridNode_GridNodeGeom6D" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_GridNode_GridNode_GridNodeGeom6D"];
        "Ig2_GridNode_GridNode_GridNodeGeom6D" -> "Ig2_Sphere_Sphere_ScGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Sphere_Polyhedra_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Sphere_Polyhedra_ScGeom"];
        "Ig2_Sphere_Polyhedra_ScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Sphere_ChainedCylinder_CylScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Sphere_ChainedCylinder_CylScGeom"];
        "Ig2_Sphere_ChainedCylinder_CylScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Wall_LevelSet_MultiScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Wall_LevelSet_MultiScGeom"];
        "Ig2_Wall_LevelSet_MultiScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Tetra_Tetra_TTetraGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Tetra_Tetra_TTetraGeom"];
        "Ig2_Tetra_Tetra_TTetraGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_PB_PB_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_PB_PB_ScGeom"];
        "Ig2_PB_PB_ScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Sphere_Sphere_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Sphere_Sphere_ScGeom"];
        "Ig2_Sphere_Sphere_ScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Sphere_GridConnection_ScGridCoGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Sphere_GridConnection_ScGridCoGeom"];
        "Ig2_Sphere_GridConnection_ScGridCoGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_ChainedCylinder_ChainedCylinder_ScGeom6D" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_ChainedCylinder_ChainedCylinder_ScGeom6D"];
        "Ig2_ChainedCylinder_ChainedCylinder_ScGeom6D" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Wall_PFacet_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Wall_PFacet_ScGeom"];
        "Ig2_Wall_PFacet_ScGeom" -> "Ig2_Wall_Sphere_ScGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Sphere_Sphere_ScGeom6D" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Sphere_Sphere_ScGeom6D"];
        "Ig2_Sphere_Sphere_ScGeom6D" -> "Ig2_Sphere_Sphere_ScGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_LevelSet_LevelSet_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_LevelSet_LevelSet_ScGeom"];
        "Ig2_LevelSet_LevelSet_ScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Facet_Sphere_ScGeom6D" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Facet_Sphere_ScGeom6D"];
        "Ig2_Facet_Sphere_ScGeom6D" -> "Ig2_Facet_Sphere_ScGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Sphere_Sphere_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Sphere_Sphere_L6Geom"];
        "Ig2_Sphere_Sphere_L6Geom" -> "Ig2_Sphere_Sphere_L3Geom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Facet_Polyhedra_PolyhedraGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Facet_Polyhedra_PolyhedraGeom"];
        "Ig2_Facet_Polyhedra_PolyhedraGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Wall_Sphere_L3Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Wall_Sphere_L3Geom"];
        "Ig2_Wall_Sphere_L3Geom" -> "Ig2_Sphere_Sphere_L3Geom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Wall_Sphere_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Wall_Sphere_ScGeom"];
        "Ig2_Wall_Sphere_ScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Sphere_PFacet_ScGridCoGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Sphere_PFacet_ScGridCoGeom"];
        "Ig2_Sphere_PFacet_ScGridCoGeom" -> "Ig2_Sphere_GridConnection_ScGridCoGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Box_Sphere_ScGeom6D" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Box_Sphere_ScGeom6D"];
        "Ig2_Box_Sphere_ScGeom6D" -> "Ig2_Box_Sphere_ScGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Sphere_ChainedCylinder_CylScGeom6D" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Sphere_ChainedCylinder_CylScGeom6D"];
        "Ig2_Sphere_ChainedCylinder_CylScGeom6D" -> "Ig2_Sphere_ChainedCylinder_CylScGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Sphere_Sphere_L3Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Sphere_Sphere_L3Geom"];
        "Ig2_Sphere_Sphere_L3Geom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_GridConnection_PFacet_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_GridConnection_PFacet_ScGeom"];
        "Ig2_GridConnection_PFacet_ScGeom" -> "Ig2_Sphere_GridConnection_ScGridCoGeom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Facet_Sphere_L3Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Facet_Sphere_L3Geom"];
        "Ig2_Facet_Sphere_L3Geom" -> "Ig2_Sphere_Sphere_L3Geom" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_GridConnection_GridConnection_GridCoGridCoGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_GridConnection_GridConnection_GridCoGridCoGeom"];
        "Ig2_GridConnection_GridConnection_GridCoGridCoGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Wall_Polyhedra_PolyhedraGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Wall_Polyhedra_PolyhedraGeom"];
        "Ig2_Wall_Polyhedra_PolyhedraGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_PP_PP_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_PP_PP_ScGeom"];
        "Ig2_PP_PP_ScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ig2_Box_LevelSet_ScGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ig2_Box_LevelSet_ScGeom"];
        "Ig2_Box_LevelSet_ScGeom" -> "IGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of IGeomFunctor.

class yade.wrapper.IGeomFunctor(inherits Functor Serializable)

Functor for creating/updating Interaction::geom objects.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Box_LevelSet_ScGeom(inherits IGeomFunctor Functor Serializable)

Creates or updates a ScGeom instance representing the intersection of one LevelSet body with one Box body. Normal is given by the box geometry while overlap and contact points are defined likewise to Ig2_LevelSet_LevelSet_ScGeom. Restricted to the case of Boxes for which local and global axes coincide, and with non zero thickness, and assuming the center of the level set body never enters into the box (ie excluding big overlaps). You may prefer using Ig2_Wall_LevelSet_ScGeom.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Box_Sphere_ScGeom(inherits IGeomFunctor Functor Serializable)

Create an interaction geometry ScGeom from Box and Sphere, representing the box with a projected virtual sphere of same radius.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property hertzian

If True, the equivalent radius for the Box (ScGeom.refR1) is chosen as 1e8 times the Sphere’s radius (closer to Hertzian theory, where it is infinite). Both are equal if False

property interactionDetectionFactor

Enlarge sphere radii by this factor (if >1), to permit creation of distant interactions.

InteractionGeometry will be computed when interactionDetectionFactor*(rad) > distance.

Note

This parameter is functionally coupled with Bo1_Sphere_Aabb::aabbEnlargeFactor, which will create larger bounding boxes and should be of the same value.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Box_Sphere_ScGeom6D(inherits Ig2_Box_Sphere_ScGeom IGeomFunctor Functor Serializable)

Create an interaction geometry ScGeom6D from Box and Sphere, representing the box with a projected virtual sphere of same radius.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property hertzian

If True, the equivalent radius for the Box (ScGeom.refR1) is chosen as 1e8 times the Sphere’s radius (closer to Hertzian theory, where it is infinite). Both are equal if False

property interactionDetectionFactor

Enlarge sphere radii by this factor (if >1), to permit creation of distant interactions.

InteractionGeometry will be computed when interactionDetectionFactor*(rad) > distance.

Note

This parameter is functionally coupled with Bo1_Sphere_Aabb::aabbEnlargeFactor, which will create larger bounding boxes and should be of the same value.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_ChainedCylinder_ChainedCylinder_ScGeom6D(inherits IGeomFunctor Functor Serializable)

Create/update a ScGeom instance representing connexion between chained cylinders.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property halfLengthContacts

If True, Cylinders nodes interact like spheres of radius 0.5*length, else one node has size length while the other has size 0. The difference is mainly the locus of rotation definition.

property interactionDetectionFactor

Enlarge both radii by this factor (if >1), to permit creation of distant interactions.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Facet_Polyhedra_PolyhedraGeom(inherits IGeomFunctor Functor Serializable)

Create/update geometry of collision between Facet and Polyhedra

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Facet_Sphere_L3Geom(inherits Ig2_Sphere_Sphere_L3Geom IGeomFunctor Functor Serializable)

Incrementally compute L3Geom for contact between Facet and Sphere. Uses attributes of Ig2_Sphere_Sphere_L3Geom.

property approxMask

Selectively enable geometrical approximations (bitmask); add the values for approximations to be enabled.

1

use previous transformation to transform velocities (which are known at mid-steps), instead of mid-step transformation computed as quaternion slerp at t=0.5.

2

do not take average (mid-step) normal when computing relative shear displacement, use previous value instead

4

do not re-normalize average (mid-step) normal, if used.…

By default, the mask is zero, wherefore none of these approximations is used.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property distFactor

Create interaction if spheres are not futher than distFactor *(r1+r2). If negative, zero normal deformation will be set to be the initial value (otherwise, the geometrical distance is the ‘’zero’’ one).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property noRatch

See Ig2_Sphere_Sphere_ScGeom.avoidGranularRatcheting.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property trsfRenorm

How often to renormalize trsf; if non-positive, never renormalized (simulation might be unstable)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Facet_Sphere_ScGeom(inherits IGeomFunctor Functor Serializable)

Create/update a ScGeom instance representing intersection of Facet and Sphere. Denoting \(u_n\) the corresponding overlap, \(\vec{C}\) the contact point and \(\vec{n}\) the contact normal while \(\vec{S}\) stands for sphere’s center, \(\vec{H}\) for its projection into the facet plane, and \(R\) for the sphere’s radius, we have:

  • \(u_n = R - ||\vec{HS}||\)

  • \(\vec{n} = \dfrac{\vec{HS}}{||\vec{HS}||}\)

when \(\vec{H}\) strictly belongs to the Facet surface (different expressions otherwise) and

  • \(\vec{C} = \vec{S} - (||\vec{HS}||-u_n/2)\vec{n}\)

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property hertzian

The equivalent radius for the Facet (ScGeom.refR1) is chosen as 1e8 times the Sphere’s radius (closer to Hertzian therory, where it is infinite).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property shrinkFactor

The radius of the inscribed circle of the facet is decreased by the value of the sphere’s radius multiplied by shrinkFactor. From the definition of contact point on the surface made of facets, the given surface is not continuous and becomes in effect surface covered with triangular tiles, with gap between the separate tiles equal to the sphere’s radius multiplied by 2×*shrinkFactor*. If zero, no shrinking is done.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Facet_Sphere_ScGeom6D(inherits Ig2_Facet_Sphere_ScGeom IGeomFunctor Functor Serializable)

Create an interaction geometry ScGeom6D from Facet and Sphere, representing the Facet with a projected virtual sphere of same radius.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property hertzian

The equivalent radius for the Facet (ScGeom.refR1) is chosen as 1e8 times the Sphere’s radius (closer to Hertzian therory, where it is infinite).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property shrinkFactor

The radius of the inscribed circle of the facet is decreased by the value of the sphere’s radius multiplied by shrinkFactor. From the definition of contact point on the surface made of facets, the given surface is not continuous and becomes in effect surface covered with triangular tiles, with gap between the separate tiles equal to the sphere’s radius multiplied by 2×*shrinkFactor*. If zero, no shrinking is done.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_GridConnection_GridConnection_GridCoGridCoGeom(inherits IGeomFunctor Functor Serializable)

Create/update a GridCoGridCoGeom instance representing the geometry of a contact point between two GridConnection , including relative rotations.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_GridConnection_PFacet_ScGeom(inherits Ig2_Sphere_GridConnection_ScGridCoGeom IGeomFunctor Functor Serializable)

Create/update a ScGeom instance representing intersection of Facet and GridConnection.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property interactionDetectionFactor

Enlarge both radii by this factor (if >1), to permit creation of distant interactions.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property shrinkFactor

The radius of the inscribed circle of the facet is decreased by the value of the sphere’s radius multipled by shrinkFactor. From the definition of contact point on the surface made of facets, the given surface is not continuous and becomes in effect surface covered with triangular tiles, with gap between the separate tiles equal to the sphere’s radius multiplied by 2×*shrinkFactor*. If zero, no shrinking is done.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_GridNode_GridNode_GridNodeGeom6D(inherits Ig2_Sphere_Sphere_ScGeom IGeomFunctor Functor Serializable)

Create/update a GridNodeGeom6D instance representing the geometry of a contact point between two GridNode, including relative rotations.

property avoidGranularRatcheting

Define relative velocity so that ratcheting is avoided. It applies for sphere-sphere contacts. It eventualy also apply for sphere-emulating interactions (i.e. convertible into the ScGeom type), if the virtual sphere’s motion is defined correctly (see e.g. Ig2_Sphere_ChainedCylinder_CylScGeom).

Short explanation of what we want to avoid :

Numerical ratcheting is best understood considering a small elastic cycle at a contact between two grains : assuming b1 is fixed, impose this displacement to b2 :

  1. translation dx in the normal direction

  2. rotation a

  3. translation -dx (back to the initial position)

  4. rotation -a (back to the initial orientation)

If the branch vector used to define the relative shear in rotation×branch is not constant (typically if it is defined from the vector center→contactPoint), then the shear displacement at the end of this cycle is not zero: rotations a and -a are multiplied by branches of different lengths.

It results in a finite contact force at the end of the cycle even though the positions and orientations are unchanged, in total contradiction with the elastic nature of the problem. It could also be seen as an inconsistent energy creation or loss. Given that DEM simulations tend to generate oscillations around equilibrium (damped mass-spring), it can have a significant impact on the evolution of the packings, resulting for instance in slow creep in iterations under constant load.

The solution adopted here to avoid ratcheting is as proposed by McNamara and co-workers. They analyzed the ratcheting problem in detail - even though they comment on the basis of a cycle that differs from the one shown above. One will find interesting discussions in e.g. [McNamara2008], even though solution it suggests is not fully applied here (equations of motion are not incorporating alpha, in contradiction with what is suggested by McNamara et al.).

property bases

Ordered list of types (as strings) this functor accepts.

property creep

Substract rotational creep from relative rotation. The rotational creep ScGeom6D::twistCreep is a quaternion and has to be updated inside a constitutive law, see for instance Law2_ScGeom6D_CohFrictPhys_CohesionMoment.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property interactionDetectionFactor

Enlarge both radii by this factor (if >1), to permit creation of distant interactions.

InteractionGeometry will be computed when interactionDetectionFactor*(rad1+rad2) > distance.

Note

This parameter is functionally coupled with Bo1_Sphere_Aabb::aabbEnlargeFactor, which will create larger bounding boxes and should be of the same value.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property updateRotations

Precompute relative rotations. Turning this false can speed up simulations when rotations are not needed in constitutive laws (e.g. when spheres are compressed without cohesion and moment in early stage of a triaxial test), but is not foolproof. Change this value only if you know what you are doing.

class yade.wrapper.Ig2_LevelSet_LevelSet_MultiScGeom(inherits Ig2_LevelSet_LevelSet_ScGeom IGeomFunctor Functor Serializable)

Multiple contact points version of Ig2_LevelSet_LevelSet_ScGeom for a MultiScGeom description of a contact between two (non-convex typically) LevelSet-shaped bodies (with a ScGeom interaction at each contacting surface node). Does not support periodic boundary conditions at the moment. It is designed to be used in combination with MultiFrictPhys for what concerns the interaction physics (which is here also touched by that Ig2 in some contrast with general YADE design, from a developer point of view) [Duriez2023].

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_LevelSet_LevelSet_ScGeom(inherits IGeomFunctor Functor Serializable)

Creates or updates a ScGeom instance representing the contact of two (convex) LevelSet-shaped bodies after executing a master-slave algorithm that combines distance function \(\phi\) (LevelSet.distField) with surface nodes \(\vec{N}\) (LevelSet.surfNodes) [Duriez2021a] [Duriez2021b]. Denoting \(S\), resp. \(B\), the smallest, resp. biggest, contacting body, \(\vec{N_c}\) the surface node of \(S\) with the greatest penetration depth into \(B\) (its current position), \(u_n\) the corresponding overlap, \(\vec{C}\) the contact point and \(\vec{n}\) the contact normal, we have:

  • \(u_n = - \phi_B(\vec{N_c})\)

  • \(\vec{n} = \pm \vec{\nabla} \phi_S(\vec{N_c})\) chosen to be oriented from 1 to 2

  • \(\vec{C} = \vec{N_c} - \dfrac{u_n}{2} \vec{n}\)

Note

in case the two LevelSet grids no longer overlap for a previously existing interaction, the above workflow does not apply and \(u_n\) is assigned an infinite tensile value that should insure interaction removal in the same DEM iteration (for sure with Law2_ScGeom_FrictPhys_CundallStrack).

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_LevelSet_LevelSet_VolumeGeom(inherits IGeomFunctor Functor Serializable)

Creates or updates a VolumeGeom instance representing the contact of two LevelSet bodies of arbitrary shape. An algorithm is used that recursively evaluates the signed distance function \(\phi\) (LevelSet.distField) at increasingly finer mesh sizes to compute the overlap volume \(V\). Surface nodes are obsolete if this functor is used. Denoting \(u_n\) as the overlap, \(\vec{C}\) the contact point and \(\vec{n}\) the contact normal, we have:

  • \(u_n = V_n = \sum_i V_i(\vec{x}_i)\)

  • \(\vec{n} = \frac{ \sum_i V_i \vec{\nabla} \phi_1(\vec{x_i}) - \sum_i V_i \vec{\nabla} \phi_2(\vec{x_i}) }{2V_n}\) chosen to be oriented from 1 to 2

  • \(\vec{C} = \frac{1}{V_n} \sum_i \vec{x}_i * V_i(\vec{x}_i)\)

Note

Because this functor expresses the particle overlap \(u_n\) as a volume, care needs to be taken that only volume-based contact laws are used. Current contact laws in YADE mainly use the overlap distance to determine the force.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property nRefineOctree

The number of refinements performed by the Octree algorithm used to compute the overlap volume between two particles. Default is 5. Note: (nr of layers, effective nr of integration elements): (1,1), (2,8), (3,64), (4,512), (5,4096), (n,8^(n-1)).

property smearCoeffOctree

Smearing coefficient for the smeared Heaviside step function in the overlap volume integration. The transition width, or smearing width, is equal to half the diagonal of the smallest integration cell divided by the smearing coefficient.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property useAABE

If true, use the provided (locally) axis-aligned bounding ellipsoid (AABE) to reduce the potential overlap volume between the particles. Increases accuracy of the Octree algrithm because the smallest integration cells will be smaller.

class yade.wrapper.Ig2_PB_PB_ScGeom(inherits IGeomFunctor Functor Serializable)

PB

property accuracyTol

accuracy desired, tolerance criteria for SOCP

property bases

Ordered list of types (as strings) this functor accepts.

property calContactArea

Whether to calculate jointLength for 2-D contacts and contactArea for 2-D and 3-D contacts

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property twoDdir

Direction of 2D

property twoDimension

Whether the contact is 2-D

property unitWidth2D

Unit width in 2D

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_PFacet_PFacet_ScGeom(inherits Ig2_Sphere_PFacet_ScGridCoGeom Ig2_Sphere_GridConnection_ScGridCoGeom IGeomFunctor Functor Serializable)

Create/update a ScGridCoGeom instance representing intersection of Facet and Sphere.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property interactionDetectionFactor

Enlarge both radii by this factor (if >1), to permit creation of distant interactions.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property shrinkFactor

The radius of the inscribed circle of the facet is decreased by the value of the sphere’s radius multipled by shrinkFactor. From the definition of contact point on the surface made of facets, the given surface is not continuous and becomes in effect surface covered with triangular tiles, with gap between the separate tiles equal to the sphere’s radius multiplied by 2×*shrinkFactor*. If zero, no shrinking is done.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_PP_PP_ScGeom(inherits IGeomFunctor Functor Serializable)

EXPERIMENTAL. IGeom functor for PotentialParticle - PotentialParticle pair

property accuracyTol

accuracy desired, tolerance criteria for SOCP

property areaStep

Angular step (degrees) to calculate KnKsPhys.contactArea. Must be a divisor of 360, e.g. 1,2,3,4,5,6,8,9 and so on, to form a closed loop. Must be smaller than 90 degrees. Smaller angles lead to more accurate calculations but are more expensive

property bases

Ordered list of types (as strings) this functor accepts.

property calContactArea

Whether to calculate jointLength for 2-D contacts and contactArea for 2-D and 3-D contacts

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property twoDdir

Direction of 2D

property twoDimension

Whether the contact is 2-D

property unitWidth2D

Unit width in 2D

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Polyhedra_Polyhedra_PolyhedraGeom(inherits IGeomFunctor Functor Serializable)

Create/update geometry of collision between 2 Polyhedras

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property interactionDetectionFactor

see Ig2_Sphere_Sphere_ScGeom.interactionDetectionFactor

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Polyhedra_Polyhedra_PolyhedraGeomOrScGeom(inherits IGeomFunctor Functor Serializable)

EXPERIMENTAL. A hacky helper Ig2 functor combining two Polyhedra shapes to give, according to the settings, either ScGeom or PolyhedraGeom, through appropriate use of either Ig2_Polyhedra_Polyhedra_ScGeom (through ig2scGeom attribute) or Ig2_Polyhedra_Polyhedra_PolyhedraGeom (ig2polyhedraGeom attribute).

property bases

Ordered list of types (as strings) this functor accepts.

property createScGeom

When true (resp. false), new contacts’ IGeom are created as ScGeom (resp. PolyhedraGeom). Existing contacts are dealt with according to their present IGeom instance.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property ig2polyhedraGeom

Helper Ig2 functor responsible for handling PolyhedraGeom.

property ig2scGeom

Helper Ig2 functor responsible for handling ScGeom.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Polyhedra_Polyhedra_ScGeom(inherits IGeomFunctor Functor Serializable)

EXPERIMENTAL. Ig2 functor creating ScGeom from two Polyhedra shapes. The radii are computed as a distance of contact point (computed using Ig2_Polyhedra_Polyhedra_PolyhedraGeom) and center of particle. Tested only for face-face contacts (like brick wall).

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property interactionDetectionFactor

see Ig2_Sphere_Sphere_ScGeom.interactionDetectionFactor

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Sphere_ChainedCylinder_CylScGeom(inherits IGeomFunctor Functor Serializable)

Create/update a ScGeom instance representing intersection of two Spheres.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property interactionDetectionFactor

Enlarge both radii by this factor (if >1), to permit creation of distant interactions.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Sphere_ChainedCylinder_CylScGeom6D(inherits Ig2_Sphere_ChainedCylinder_CylScGeom IGeomFunctor Functor Serializable)

Create/update a ScGeom6D instance representing the geometry of a contact point between two Spheres, including relative rotations.

property bases

Ordered list of types (as strings) this functor accepts.

property creep

Substract rotational creep from relative rotation. The rotational creep ScGeom6D::twistCreep is a quaternion and has to be updated inside a constitutive law, see for instance Law2_ScGeom6D_CohFrictPhys_CohesionMoment.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property interactionDetectionFactor

Enlarge both radii by this factor (if >1), to permit creation of distant interactions.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property updateRotations

Precompute relative rotations. Turning this false can speed up simulations when rotations are not needed in constitutive laws (e.g. when spheres are compressed without cohesion and moment in early stage of a triaxial test), but is not foolproof. Change this value only if you know what you are doing.

class yade.wrapper.Ig2_Sphere_GridConnection_ScGridCoGeom(inherits IGeomFunctor Functor Serializable)

Create/update a ScGridCoGeom6D instance representing the geometry of a contact point between a GricConnection and a Sphere including relative rotations.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property interactionDetectionFactor

Enlarge both radii by this factor (if >1), to permit creation of distant interactions.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Sphere_LevelSet_ScGeom(inherits IGeomFunctor Functor Serializable)

Creates or updates a ScGeom instance representing the intersection of one LevelSet-shaped body with one Sphere-shaped body, where overlap is always chosen to occur inside the level set body (i.e. spheres will always be expelled). Contact normal \(\vec{n}\) is given by the level set normal at the centre of the sphere \(\vec{c}\) while overlap is given by \(R - \varphi\) with \(R\) the radius and \(\varphi\) the level set value. And contact points is defined as \(\vec{c}-\varphi \vec{n}\). This functionality does not require the level set to have surface nodes. Approximations for \(\phi\) outside the level set may become inaccurate if the spheres are of similar size or larger than the level set body. Accuracy is guaranteed it the largest sphere is around the same size, or smaller than, the smallest grid cell in the level set.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Sphere_PFacet_ScGridCoGeom(inherits Ig2_Sphere_GridConnection_ScGridCoGeom IGeomFunctor Functor Serializable)

Create/update a ScGridCoGeom instance representing intersection of PFacet and Sphere.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property interactionDetectionFactor

Enlarge both radii by this factor (if >1), to permit creation of distant interactions.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property shrinkFactor

The radius of the inscribed circle of the facet is decreased by the value of the sphere’s radius multipled by shrinkFactor. From the definition of contact point on the surface made of facets, the given surface is not continuous and becomes in effect surface covered with triangular tiles, with gap between the separate tiles equal to the sphere’s radius multiplied by 2×*shrinkFactor*. If zero, no shrinking is done.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Sphere_Polyhedra_ScGeom(inherits IGeomFunctor Functor Serializable)

Create/update geometry of collision between Sphere and Polyhedra

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property edgeCoeff

multiplier of penetrationDepth when sphere contacts edge (simulating smaller volume of actual intersection or when several polyhedrons has common edge)

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vertexCoeff

multiplier of penetrationDepth when sphere contacts vertex (simulating smaller volume of actual intersection or when several polyhedrons has common vertex)

class yade.wrapper.Ig2_Sphere_Sphere_L3Geom(inherits IGeomFunctor Functor Serializable)

Functor for computing incrementally configuration of 2 Spheres stored in L3Geom; the configuration is positioned in global space by local origin \(\vec{c}\) (contact point) and rotation matrix \(\mat{T}\) (orthonormal transformation matrix), and its degrees of freedom are local displacement \(\vec{u}\) (in one normal and two shear directions); with Ig2_Sphere_Sphere_L6Geom and L6Geom, there is additionally \(\vec{\phi}\). The first row of \(\mat{T}\), i.e. local \(x\)-axis, is the contact normal noted \(\vec{n}\) for brevity. Additionally, quasi-constant values of \(\vec{u}_0\) (and \(\vec{\phi}_0\)) are stored as shifted origins of \(\vec{u}\) (and \(\vec{\phi}\)); therefore, current value of displacement is always \(\curr{\vec{u}}-\vec{u}_0\).

Suppose two spheres with radii \(r_i\), positions \(\vec{x}_i\), velocities \(\vec{v}_i\), angular velocities \(\vec{\omega}_i\).

When there is not yet contact, it will be created if \(u_N=|\curr{\vec{x}}_2-\curr{\vec{x}}_1|-|f_d|(r_1+r2)<0\), where \(f_d\) is distFactor (sometimes also called ``interaction radius’’). If \(f_d>0\), then \(\vec{u}_{0x}\) will be initalized to \(u_N\), otherwise to 0. In another words, contact will be created if spheres enlarged by \(|f_d|\) touch, and the ``equilibrium distance’’ (where \(\vec{u}_x-\vec{u}-{0x}\) is zero) will be set to the current distance if \(f_d\) is positive, and to the geometrically-touching distance if negative.

Local axes (rows of \(\mat{T}\)) are initially defined as follows:

  • local \(x\)-axis is \(\vec{n}=\vec{x}_l=\normalized{\vec{x}_2-\vec{x}_1}\);

  • local \(y\)-axis positioned arbitrarily, but in a deterministic manner: aligned with the \(xz\) plane (if \(\vec{n}_y<\vec{n}_z\)) or \(xy\) plane (otherwise);

  • local \(z\)-axis \(\vec{z}_l=\vec{x}_l\times\vec{y}_l\).

If there has already been contact between the two spheres, it is updated to keep track of rigid motion of the contact (one that does not change mutual configuration of spheres) and mutual configuration changes. Rigid motion transforms local coordinate system and can be decomposed in rigid translation (affecting \(\vec{c}\)), and rigid rotation (affecting \(\mat{T}\)), which can be split in rotation \(\vec{o}_r\) perpendicular to the normal and rotation \(\vec{o}_t\) (``twist’’) parallel with the normal:

\[\pprev{\vec{o}_r}=\prev{\vec{n}}\times\curr{\vec{n}}.\]

Since velocities are known at previous midstep (\(t-\Dt/2\)), we consider mid-step normal

\[\pprev{\vec{n}}=\frac{\prev{\vec{n}}+\curr{\vec{n}}}{2}.\]

For the sake of numerical stability, \(\pprev{\vec{n}}\) is re-normalized after being computed, unless prohibited by approxMask. If approxMask has the appropriate bit set, the mid-normal is not compute, and we simply use \(\pprev{\vec{n}}\approx\prev{\vec{n}}\).

Rigid rotation parallel with the normal is

\[\pprev{\vec{o}_t}=\pprev{\vec{n}}\left(\pprev{\vec{n}}\cdot\frac{\pprev{\vec{\omega}}_1+\pprev{\vec{\omega}}_2}{2}\right)\Dt.\]

Branch vectors \(\vec{b}_1\), \(\vec{b}_2\) (connecting \(\curr{\vec{x}}_1\), \(\curr{\vec{x}}_2\) with \(\curr{\vec{c}}\) are computed depending on noRatch (see here).

\begin{align*} \vec{b}_1&=\begin{cases} r_1 \curr{\vec{n}} & \mbox{with }\texttt{noRatch} \\ \curr{\vec{c}}-\curr{\vec{x}}_1 & \mbox{otherwise} \end{cases} \\ \vec{b}_2&=\begin{cases} -r_2\curr{\vec{n}} & \mbox{with }\texttt{noRatch} \\ \curr{\vec{c}}-\curr{\vec{x}}_2 & \mbox{otherwise} \end{cases} \\ \end{align*}

Relative velocity at \(\curr{\vec{c}}\) can be computed as

\[\pprev{\vec{v}_r}=(\pprev{\vec{\tilde{v}}_2}+\vec{\omega}_2\times\vec{b}_2)-(\vec{v}_1+\vec{\omega}_1\times\vec{b}_1)\]

where \(\vec{\tilde{v}}_2\) is \(\vec{v}_2\) without mean-field velocity gradient in periodic boundary conditions (see Cell.homoDeform). In the numerial implementation, the normal part of incident velocity is removed (since it is computed directly) with \(\pprev{\vec{v}_{r2}}=\pprev{\vec{v}_r}-(\pprev{\vec{n}}\cdot\pprev{\vec{v}_r})\pprev{\vec{n}}\).

Any vector \(\vec{a}\) expressed in global coordinates transforms during one timestep as

\[\curr{\vec{a}}=\prev{\vec{a}}+\pprev{\vec{v}_r}\Dt-\prev{\vec{a}}\times\pprev{\vec{o}_r}-\prev{\vec{a}}\times{\pprev{\vec{t}_r}}\]

where the increments have the meaning of relative shear, rigid rotation normal to \(\vec{n}\) and rigid rotation parallel with \(\vec{n}\). Local coordinate system orientation, rotation matrix \(\mat{T}\), is updated by rows, i.e.

\[\begin{split}\curr{\mat{T}}=\begin{pmatrix} \curr{\vec{n}_x}{\hspace{12mm}}\curr{\vec{n}_y}{\hspace{12mm}}\curr{\vec{n}_z} \\ {\prev{\mat{T}_{1,\bullet}}-\prev{\mat{T}_{1,\bullet}}\times\pprev{\vec{o}_r}-\prev{\mat{T}_{1,\bullet}}\times\pprev{\vec{o}_t}} \\ {\prev{\mat{T}_{2,\bullet}}-\prev{\mat{T}_{2,\bullet}}\times\pprev{\vec{o}_r}-\prev{\mat{T}_{,\bullet}}\times\pprev{\vec{o}_t}} \\ \end{pmatrix}\end{split}\]

This matrix is re-normalized (unless prevented by approxMask) and mid-step transformation is computed using quaternion spherical interpolation as

\[\pprev{\mat{T}}=\mathrm{Slerp}\,\left(\prev{\mat{T}};\curr{\mat{T}};t=1/2\right).\]

Depending on approxMask, this computation can be avoided by approximating \(\pprev{\mat{T}}=\prev{\mat{T}}\).

Finally, current displacement is evaluated as

\[\curr{\vec{u}}=\prev{u}+\pprev{\mat{T}}\pprev{\vec{v}_r}\Dt.\]

For the normal component, non-incremental evaluation is preferred, giving

\[\curr{\vec{u}_x}=|\curr{\vec{x}_2}-\curr{\vec{x}_1}|-(r_1+r_2)\]

If this functor is called for L6Geom, local rotation is updated as

\[\curr{\vec{\phi}}=\prev{\vec{\phi}}+\pprev{\mat{T}}\Dt(\vec{\omega}_2-\vec{\omega}_1)\]
property approxMask

Selectively enable geometrical approximations (bitmask); add the values for approximations to be enabled.

1

use previous transformation to transform velocities (which are known at mid-steps), instead of mid-step transformation computed as quaternion slerp at t=0.5.

2

do not take average (mid-step) normal when computing relative shear displacement, use previous value instead

4

do not re-normalize average (mid-step) normal, if used.…

By default, the mask is zero, wherefore none of these approximations is used.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property distFactor

Create interaction if spheres are not futher than distFactor *(r1+r2). If negative, zero normal deformation will be set to be the initial value (otherwise, the geometrical distance is the ‘’zero’’ one).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property noRatch

See Ig2_Sphere_Sphere_ScGeom.avoidGranularRatcheting.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property trsfRenorm

How often to renormalize trsf; if non-positive, never renormalized (simulation might be unstable)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Sphere_Sphere_L6Geom(inherits Ig2_Sphere_Sphere_L3Geom IGeomFunctor Functor Serializable)

Incrementally compute L6Geom for contact of 2 spheres.

property approxMask

Selectively enable geometrical approximations (bitmask); add the values for approximations to be enabled.

1

use previous transformation to transform velocities (which are known at mid-steps), instead of mid-step transformation computed as quaternion slerp at t=0.5.

2

do not take average (mid-step) normal when computing relative shear displacement, use previous value instead

4

do not re-normalize average (mid-step) normal, if used.…

By default, the mask is zero, wherefore none of these approximations is used.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property distFactor

Create interaction if spheres are not futher than distFactor *(r1+r2). If negative, zero normal deformation will be set to be the initial value (otherwise, the geometrical distance is the ‘’zero’’ one).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property noRatch

See Ig2_Sphere_Sphere_ScGeom.avoidGranularRatcheting.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property trsfRenorm

How often to renormalize trsf; if non-positive, never renormalized (simulation might be unstable)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Sphere_Sphere_ScGeom(inherits IGeomFunctor Functor Serializable)

Create/update a ScGeom instance representing the geometry of a contact point between two Spheres s.

property avoidGranularRatcheting

Define relative velocity so that ratcheting is avoided. It applies for sphere-sphere contacts. It eventualy also apply for sphere-emulating interactions (i.e. convertible into the ScGeom type), if the virtual sphere’s motion is defined correctly (see e.g. Ig2_Sphere_ChainedCylinder_CylScGeom).

Short explanation of what we want to avoid :

Numerical ratcheting is best understood considering a small elastic cycle at a contact between two grains : assuming b1 is fixed, impose this displacement to b2 :

  1. translation dx in the normal direction

  2. rotation a

  3. translation -dx (back to the initial position)

  4. rotation -a (back to the initial orientation)

If the branch vector used to define the relative shear in rotation×branch is not constant (typically if it is defined from the vector center→contactPoint), then the shear displacement at the end of this cycle is not zero: rotations a and -a are multiplied by branches of different lengths.

It results in a finite contact force at the end of the cycle even though the positions and orientations are unchanged, in total contradiction with the elastic nature of the problem. It could also be seen as an inconsistent energy creation or loss. Given that DEM simulations tend to generate oscillations around equilibrium (damped mass-spring), it can have a significant impact on the evolution of the packings, resulting for instance in slow creep in iterations under constant load.

The solution adopted here to avoid ratcheting is as proposed by McNamara and co-workers. They analyzed the ratcheting problem in detail - even though they comment on the basis of a cycle that differs from the one shown above. One will find interesting discussions in e.g. [McNamara2008], even though solution it suggests is not fully applied here (equations of motion are not incorporating alpha, in contradiction with what is suggested by McNamara et al.).

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property interactionDetectionFactor

Enlarge both radii by this factor (if >1), to permit creation of distant interactions.

InteractionGeometry will be computed when interactionDetectionFactor*(rad1+rad2) > distance.

Note

This parameter is functionally coupled with Bo1_Sphere_Aabb::aabbEnlargeFactor, which will create larger bounding boxes and should be of the same value.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Sphere_Sphere_ScGeom6D(inherits Ig2_Sphere_Sphere_ScGeom IGeomFunctor Functor Serializable)

Create/update a ScGeom6D instance representing the geometry of a contact point between two Spheres, including relative rotations.

property avoidGranularRatcheting

Define relative velocity so that ratcheting is avoided. It applies for sphere-sphere contacts. It eventualy also apply for sphere-emulating interactions (i.e. convertible into the ScGeom type), if the virtual sphere’s motion is defined correctly (see e.g. Ig2_Sphere_ChainedCylinder_CylScGeom).

Short explanation of what we want to avoid :

Numerical ratcheting is best understood considering a small elastic cycle at a contact between two grains : assuming b1 is fixed, impose this displacement to b2 :

  1. translation dx in the normal direction

  2. rotation a

  3. translation -dx (back to the initial position)

  4. rotation -a (back to the initial orientation)

If the branch vector used to define the relative shear in rotation×branch is not constant (typically if it is defined from the vector center→contactPoint), then the shear displacement at the end of this cycle is not zero: rotations a and -a are multiplied by branches of different lengths.

It results in a finite contact force at the end of the cycle even though the positions and orientations are unchanged, in total contradiction with the elastic nature of the problem. It could also be seen as an inconsistent energy creation or loss. Given that DEM simulations tend to generate oscillations around equilibrium (damped mass-spring), it can have a significant impact on the evolution of the packings, resulting for instance in slow creep in iterations under constant load.

The solution adopted here to avoid ratcheting is as proposed by McNamara and co-workers. They analyzed the ratcheting problem in detail - even though they comment on the basis of a cycle that differs from the one shown above. One will find interesting discussions in e.g. [McNamara2008], even though solution it suggests is not fully applied here (equations of motion are not incorporating alpha, in contradiction with what is suggested by McNamara et al.).

property bases

Ordered list of types (as strings) this functor accepts.

property creep

Substract rotational creep from relative rotation. The rotational creep ScGeom6D::twistCreep is a quaternion and has to be updated inside a constitutive law, see for instance Law2_ScGeom6D_CohFrictPhys_CohesionMoment.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property interactionDetectionFactor

Enlarge both radii by this factor (if >1), to permit creation of distant interactions.

InteractionGeometry will be computed when interactionDetectionFactor*(rad1+rad2) > distance.

Note

This parameter is functionally coupled with Bo1_Sphere_Aabb::aabbEnlargeFactor, which will create larger bounding boxes and should be of the same value.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property updateRotations

Precompute relative rotations. Turning this false can speed up simulations when rotations are not needed in constitutive laws (e.g. when spheres are compressed without cohesion and moment in early stage of a triaxial test), but is not foolproof. Change this value only if you know what you are doing.

class yade.wrapper.Ig2_Tetra_Tetra_TTetraGeom(inherits IGeomFunctor Functor Serializable)

Create/update geometry of collision between 2 tetrahedra (TTetraGeom instance)

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Tetra_Tetra_TTetraSimpleGeom(inherits IGeomFunctor Functor Serializable)

EXPERIMANTAL. Create/update geometry of collision between 2 tetrahedra (TTetraSimpleGeom instance)

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Wall_LevelSet_MultiScGeom(inherits IGeomFunctor Functor Serializable)

Creates or updates a MultiScGeom instance representing the multiple contact points interaction kinematics of one LevelSet body with one Wall body, extending Ig2_Wall_LevelSet_ScGeom to non-convex LevelSet-shaped bodies. Relative orientation of wall wrt global axes is again not supported. TODO: time cost could / should be improved (wrt Ig2_LevelSet_LevelSet_MultiScGeom; jduriez note see aor8* and aor9*)

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Wall_LevelSet_ScGeom(inherits IGeomFunctor Functor Serializable)

Creates or updates a ScGeom instance representing the intersection of one LevelSet-shaped body with one Wall-shaped body, where overlap is chosen to occur on the opposite wall side than the LevelSet body’s center. Contact normal is given by the wall normal (relative orientation of wall wrt global axes is not supported) while overlap and contact points are defined likewise to Ig2_LevelSet_LevelSet_ScGeom.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Wall_LevelSet_VolumeGeom(inherits IGeomFunctor Functor Serializable)

Creates or updates a VolumeGeom instance representing the intersection of one LevelSet body with one Wall body, where overlap is chosen to occur on the opposite wall side than the LevelSet body’s center. Contact normal is given by the wall normal while overlap and contact points are defined likewise to Ig2_LevelSet_LevelSet_VolumeGeom.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property nRefineOctree

The number of refinements performed by the Octree algorithm used to compute the overlap volume between two particles. Default is 5.

property smearCoeffOctree

Smearing coefficient for the smeared Heaviside step function in the overlap volume integration. The transition width, or smearing width, is equal to half the diagonal of the smallest integration cell divided by the smearing coefficient.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property useAABE

If true, use the provided (locally) axis-aligned bounding ellipsoid (AABE) to reduce the potential overlap volume between the particles. Increases accuracy of the Octree algrithm because the smallest integration cells will be smaller.

class yade.wrapper.Ig2_Wall_PFacet_ScGeom(inherits Ig2_Wall_Sphere_ScGeom IGeomFunctor Functor Serializable)

Create/update a ScGeom instance representing intersection of Wall and PFacet.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property hertzian

The equivalent radius for the Wall (ScGeom.refR1) is chosen as 1e8 times the Sphere’s radius (closer to Hertzian therory, where it is infinite).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property noRatch

Avoid granular ratcheting

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Wall_Polyhedra_PolyhedraGeom(inherits IGeomFunctor Functor Serializable)

Create/update geometry of collision between Wall and Polyhedra

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Wall_Sphere_L3Geom(inherits Ig2_Sphere_Sphere_L3Geom IGeomFunctor Functor Serializable)

Incrementally compute L3Geom for contact between Wall and Sphere. Uses attributes of Ig2_Sphere_Sphere_L3Geom.

property approxMask

Selectively enable geometrical approximations (bitmask); add the values for approximations to be enabled.

1

use previous transformation to transform velocities (which are known at mid-steps), instead of mid-step transformation computed as quaternion slerp at t=0.5.

2

do not take average (mid-step) normal when computing relative shear displacement, use previous value instead

4

do not re-normalize average (mid-step) normal, if used.…

By default, the mask is zero, wherefore none of these approximations is used.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property distFactor

Create interaction if spheres are not futher than distFactor *(r1+r2). If negative, zero normal deformation will be set to be the initial value (otherwise, the geometrical distance is the ‘’zero’’ one).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property noRatch

See Ig2_Sphere_Sphere_ScGeom.avoidGranularRatcheting.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property trsfRenorm

How often to renormalize trsf; if non-positive, never renormalized (simulation might be unstable)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ig2_Wall_Sphere_ScGeom(inherits IGeomFunctor Functor Serializable)

Create/update a ScGeom instance representing intersection of Wall and Sphere. The equivalent radius for the Wall (ScGeom.refR1) is chosen equal to the Sphere’s radius.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property hertzian

The equivalent radius for the Wall (ScGeom.refR1) is chosen as 1e8 times the Sphere’s radius (closer to Hertzian therory, where it is infinite).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property noRatch

Avoid granular ratcheting

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

IGeomDispatcher

class yade.wrapper.IGeomDispatcher(inherits Dispatcher Engine Serializable)

Dispatcher calling functors based on received argument type(s).

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispFunctor((IGeomDispatcher)arg1, (Shape)arg2, (Shape)arg3) IGeomFunctor :

Return functor that would be dispatched for given argument(s); None if no dispatch; ambiguous dispatch throws.

dispMatrix((IGeomDispatcher)arg1[, (bool)names=True]) dict :

Return dictionary with contents of the dispatch matrix.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property functors

Functors associated with this dispatcher.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

Interaction Physics creation

IPhysFunctor

digraph IPhysFunctor {
        rankdir=RL;
        margin="0.2,0.05";
        "IPhysFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.IPhysFunctor"];
        "Ip2_MortarMat_MortarMat_MortarPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_MortarMat_MortarMat_MortarPhys"];
        "Ip2_MortarMat_MortarMat_MortarPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_FrictMat_MindlinPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictMat_MindlinPhys"];
        "Ip2_FrictMat_FrictMat_MindlinPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_PolyhedraMat_PolyhedraMat_PolyhedraPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_PolyhedraMat_PolyhedraMat_PolyhedraPhys"];
        "Ip2_PolyhedraMat_PolyhedraMat_PolyhedraPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_CpmMat_FrictPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_CpmMat_FrictPhys"];
        "Ip2_FrictMat_CpmMat_FrictPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_FrictMat_MindlinCapillaryPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictMat_MindlinCapillaryPhys"];
        "Ip2_FrictMat_FrictMat_MindlinCapillaryPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_ElastMat_ElastMat_NormPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_ElastMat_ElastMat_NormPhys"];
        "Ip2_ElastMat_ElastMat_NormPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_LudingMat_LudingMat_LudingPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_LudingMat_LudingMat_LudingPhys"];
        "Ip2_LudingMat_LudingMat_LudingPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_WireMat_WireMat_WirePhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_WireMat_WireMat_WirePhys"];
        "Ip2_WireMat_WireMat_WirePhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_PolyhedraMat_FrictPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_PolyhedraMat_FrictPhys"];
        "Ip2_FrictMat_PolyhedraMat_FrictPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_2xInelastCohFrictMat_InelastCohFrictPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_2xInelastCohFrictMat_InelastCohFrictPhys"];
        "Ip2_2xInelastCohFrictMat_InelastCohFrictPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_FrictViscoMat_FrictViscoPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictViscoMat_FrictViscoPhys"];
        "Ip2_FrictMat_FrictViscoMat_FrictViscoPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_FrictMat_KnKsPBPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictMat_KnKsPBPhys"];
        "Ip2_FrictMat_FrictMat_KnKsPBPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_ViscElCapMat_ViscElCapMat_ViscElCapPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_ViscElCapMat_ViscElCapMat_ViscElCapPhys"];
        "Ip2_ViscElCapMat_ViscElCapMat_ViscElCapPhys" -> "Ip2_ViscElMat_ViscElMat_ViscElPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_FrictMat_FrictPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictMat_FrictPhys"];
        "Ip2_FrictMat_FrictMat_FrictPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_FrictMat_ViscoFrictPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictMat_ViscoFrictPhys"];
        "Ip2_FrictMat_FrictMat_ViscoFrictPhys" -> "Ip2_FrictMat_FrictMat_FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_FrictMat_LubricationPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictMat_LubricationPhys"];
        "Ip2_FrictMat_FrictMat_LubricationPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_ViscElMat_ViscElMat_ViscElPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_ViscElMat_ViscElMat_ViscElPhys"];
        "Ip2_ViscElMat_ViscElMat_ViscElPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_CpmMat_CpmMat_CpmPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_CpmMat_CpmMat_CpmPhys"];
        "Ip2_CpmMat_CpmMat_CpmPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictViscoMat_FrictViscoMat_FrictViscoPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictViscoMat_FrictViscoMat_FrictViscoPhys"];
        "Ip2_FrictViscoMat_FrictViscoMat_FrictViscoPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_JCFpmMat_JCFpmMat_JCFpmPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_JCFpmMat_JCFpmMat_JCFpmPhys"];
        "Ip2_JCFpmMat_JCFpmMat_JCFpmPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_FrictMatCDM_MindlinPhysCDM" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictMatCDM_MindlinPhysCDM"];
        "Ip2_FrictMat_FrictMatCDM_MindlinPhysCDM" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_FrictMat_MultiFrictPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictMat_MultiFrictPhys"];
        "Ip2_FrictMat_FrictMat_MultiFrictPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_FrictMat_CapillaryMindlinPhysDelaunay" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictMat_CapillaryMindlinPhysDelaunay"];
        "Ip2_FrictMat_FrictMat_CapillaryMindlinPhysDelaunay" -> "Ip2_FrictMat_FrictMat_MindlinPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_CohFrictMat_CohFrictMat_CohFrictPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_CohFrictMat_CohFrictMat_CohFrictPhys"];
        "Ip2_CohFrictMat_CohFrictMat_CohFrictPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_FrictMat_CapillaryPhysDelaunay" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictMat_CapillaryPhysDelaunay"];
        "Ip2_FrictMat_FrictMat_CapillaryPhysDelaunay" -> "Ip2_FrictMat_FrictMat_FrictPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_PartialSatMat_PartialSatMat_MindlinPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_PartialSatMat_PartialSatMat_MindlinPhys"];
        "Ip2_PartialSatMat_PartialSatMat_MindlinPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_BubbleMat_BubbleMat_BubblePhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_BubbleMat_BubbleMat_BubblePhys"];
        "Ip2_BubbleMat_BubbleMat_BubblePhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMatCDM_FrictMatCDM_MindlinPhysCDM" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMatCDM_FrictMatCDM_MindlinPhysCDM"];
        "Ip2_FrictMatCDM_FrictMatCDM_MindlinPhysCDM" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_ElastMat_ElastMat_NormShearPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_ElastMat_ElastMat_NormShearPhys"];
        "Ip2_ElastMat_ElastMat_NormShearPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_FrictMat_KnKsPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictMat_KnKsPhys"];
        "Ip2_FrictMat_FrictMat_KnKsPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Ip2_FrictMat_FrictMat_CapillaryPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Ip2_FrictMat_FrictMat_CapillaryPhys"];
        "Ip2_FrictMat_FrictMat_CapillaryPhys" -> "IPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of IPhysFunctor.

class yade.wrapper.IPhysFunctor(inherits Functor Serializable)

Functor for creating/updating Interaction::phys objects from bodies’ material properties.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_2xInelastCohFrictMat_InelastCohFrictPhys(inherits IPhysFunctor Functor Serializable)

Generates cohesive-frictional interactions with moments. Used in the contact law Law2_ScGeom6D_InelastCohFrictPhys_CohesionMoment.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_BubbleMat_BubbleMat_BubblePhys(inherits IPhysFunctor Functor Serializable)

Generates bubble interactions.Used in the contact law Law2_ScGeom_BubblePhys_Bubble.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(inherits IPhysFunctor Functor Serializable)

Generates cohesive-frictional interactions with moments, used in the contact law Law2_ScGeom6D_CohFrictPhys_CohesionMoment. The normal/shear stiffness and friction definitions are the same as in Ip2_FrictMat_FrictMat_FrictPhys, check the documentation there for details.

Adhesions related to the normal and the shear components are calculated from CohFrictMat::normalCohesion (\(C_n\)) and CohFrictMat::shearCohesion (\(C_s\)). For particles of size \(R_1\),\(R_2\) the adhesion will be \(a_i=C_i min(R_1,R_2)^2\), \(i=n,s\).

Twist and rolling stiffnesses are proportional to the shear stiffness through dimensionless factors alphaKtw and alphaKr, such that the rotational stiffnesses are defined by \(k_s \alpha_i R_1 R_2\), \(i=tw,r. The adhesive contributions to rolling and twisting resistance are by default `\ C_r=\frac{C_n}{4} min(R_1,R_2)^3\ :math:\) and `C_{tw}=frac{C_s}{2} min(R_1,R_2)^3$ (inspired by the case of beams).

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property frictAngle

Instance of MatchMaker determining how to compute interaction’s friction angle. If None, minimum value is used.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property normalCohesion

Instance of MatchMaker determining tensile strength

property rollingCohesion

Instance of MatchMaker determining cohesive part of the rolling strength (a frictional term might be added depending on CohFrictPhys::cohesionDisablesFriction). The default is \(\frac{r}{4}R_t\) with \(R_t\) the shear strength (inspired by stress in beams with circular cross-section).

setCohesion((Ip2_CohFrictMat_CohFrictMat_CohFrictPhys)arg1, (Interaction)interaction, (bool)cohesive, (bool)resetDisp) None :

Bond or un-bond an interaction with cohesion.

When True, the resulting state is the same as what is obtained by executing an InteractionLoop with the functor’s setCohesionNow or the interaction’s CohFrictPhys::initCohesion True. It will use the matchmakers if defined. The only difference is that calling this function explicitly will make the contact cohesive even if not both materials have CohFrictMat::isCohesive`=``True`.

When False, the resulting state is the same as after breaking a fragile interaction. If resetDisp is True, the current distance is taken as the reference for computing normal displacement and normal force.

property setCohesionNow

If true, assign cohesion to all existing contacts in current time-step. The flag is turned false automatically, so that assignment is done in the current timestep only.

property setCohesionOnNewContacts

If true, assign cohesion at all new contacts. If false, only existing contacts can be cohesive (also see Ip2_CohFrictMat_CohFrictMat_CohFrictPhys::setCohesionNow), and new contacts are only frictional.

property shearCohesion

Instance of MatchMaker determining cohesive part of the shear strength (a frictional term might be added depending on CohFrictPhys::cohesionDisablesFriction)

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property twistingCohesion

Instance of MatchMaker determining cohesive part of the twisting strength (a frictional term might be added depending on CohFrictPhys::cohesionDisablesFriction). The default is \(\frac{r}{2}R_s\) with \(R_s\) the shear strength (inspired by stress in beams with circular cross-section).

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_CpmMat_CpmMat_CpmPhys(inherits IPhysFunctor Functor Serializable)

Convert 2 CpmMat instances to CpmPhys with corresponding parameters. Uses simple (arithmetic) averages if material are different. Simple copy of parameters is performed if the material is shared between both particles. See cpm-model for detals.

property E

Instance of MatchMaker determining how to compute interaction’s normal modulus. If None, average value is used.

property bases

Ordered list of types (as strings) this functor accepts.

property cohesiveThresholdIter

Should new contacts be cohesive? They will before this iter#, they will not be afterwards. If 0, they will never be. If negative, they will always be created as cohesive (10 by default).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_ElastMat_ElastMat_NormPhys(inherits IPhysFunctor Functor Serializable)

Create a NormPhys from two ElastMats. TODO. EXPERIMENTAL

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_ElastMat_ElastMat_NormShearPhys(inherits IPhysFunctor Functor Serializable)

Create a NormShearPhys from two ElastMats. TODO. EXPERIMENTAL

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_FrictMatCDM_FrictMatCDM_MindlinPhysCDM(inherits IPhysFunctor Functor Serializable)

Create a MindlinPhysCDM from two FrictMatCDMsExts.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property frictAngle

Instance of MatchMaker determining how to compute interaction’s friction angle. If None, minimum value is used.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_FrictMat_CpmMat_FrictPhys(inherits IPhysFunctor Functor Serializable)

Convert CpmMat instance and FrictMat instance to FrictPhys with corresponding parameters (young, poisson, frictionAngle). Uses simple (arithmetic) averages if material parameters are different.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property frictAngle

See Ip2_FrictMat_FrictMat_FrictPhys.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_FrictMat_FrictMatCDM_MindlinPhysCDM(inherits IPhysFunctor Functor Serializable)

Create a MindlinPhysCDM from one FrictMat and one FrictMatCDM instance.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property frictAngle

Instance of MatchMaker determining how to compute interaction’s friction angle. If None, minimum value is used.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_FrictMat_FrictMat_CapillaryMindlinPhysDelaunay(inherits Ip2_FrictMat_FrictMat_MindlinPhys IPhysFunctor Functor Serializable)

Variant of Ip2_(matType)_(matType)_(iPhysType) to be used with CapillarityEngine.

property bases

Ordered list of types (as strings) this functor accepts.

property betan

Normal viscous damping ratio \(\beta_n\).

property betas

Shear viscous damping ratio \(\beta_s\).

property computeDefault

bool to assign the default value of computeBridge.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property en

Normal coefficient of restitution \(e_n\).

property es

Shear coefficient of restitution \(e_s\).

property eta

Coefficient to determine the plastic bending moment

property frictAngle

Instance of MatchMaker determining how to compute the friction angle of an interaction. If None, minimum value is used.

property gamma

Surface energy parameter [J/m^2] per each unit contact surface, to derive DMT formulation from HM

property krot

Rotational stiffness for moment contact law

property ktwist

Torsional stiffness for moment contact law

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vn

Impact velocity corresponding to the en value to calculate the dissipative constant \(An\) used in the viscous damping model of [Mueller2011].

class yade.wrapper.Ip2_FrictMat_FrictMat_CapillaryPhys(inherits IPhysFunctor Functor Serializable)

RelationShips to use with Law2_ScGeom_CapillaryPhys_Capillarity.

In these RelationShips all the interaction attributes are computed.

Warning

as in the others Ip2 functors, most of the attributes are computed only once, when the interaction is new.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_FrictMat_FrictMat_CapillaryPhysDelaunay(inherits Ip2_FrictMat_FrictMat_FrictPhys IPhysFunctor Functor Serializable)

Variant of Ip2_FrictMat_FrictMat_FrictPhys to be used with CapillarityEngine.

property bases

Ordered list of types (as strings) this functor accepts.

property computeDefault

bool to assign the default value of computeBridge.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property frictAngle

Instance of MatchMaker determining how to compute interaction’s friction angle. If None, minimum value is used.

property kn

Instance of MatchMaker determining how to compute interaction’s normal stiffness. If None, harmonic average is used.

property ks

Instance of MatchMaker determining how to compute interaction’s shear stiffness. If None, harmonic average is used.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_FrictMat_FrictMat_FrictPhys(inherits IPhysFunctor Functor Serializable)

Create a FrictPhys from two FrictMats. The compliance of one sphere under point load is defined here as \(1/(E.D)\), with \(E\) the stiffness of the sphere and \(D\) its diameter. The compliance of the contact itself is taken as the sum of compliances from each sphere, i.e. \(1/(E_1.D_1)+1/(E_2.D_2)\) in the general case, or \(2/(E.D)\) in the special case of equal sizes and equal stiffness. Note that summing compliances is equivalent to summing the harmonic average of stiffnesses. This reasoning is applied in both the normal and the tangential directions (as in e.g. [Scholtes2009a]), hence the general form of the contact stiffness:

\(k = \frac{E_1D_1*E_2D_2}{E_1D_1+E_2D_2}=\frac{k_1*k_2}{k_1+k_2}\), with \(k_i=E_iD_i\).

In the above equation \(E_i\) is taken equal to FrictMat::young of sphere \(i\) for the normal stiffness, and FrictMat::young \(\times\) ElastMat::poisson for the shear stiffness. In the case of a contact between a ViscElMat and a FrictMat, be sure to set FrictMat::young and FrictMat::poisson, otherwise the default value will be used.

The contact friction is defined according to Ip2_FrictMat_FrictMat_FrictPhys::frictAngle (minimum of the two materials by default).

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property frictAngle

Instance of MatchMaker determining how to compute interaction’s friction angle. If None, minimum value is used.

property kn

Instance of MatchMaker determining how to compute interaction’s normal stiffness. If None, harmonic average is used.

property ks

Instance of MatchMaker determining how to compute interaction’s shear stiffness. If None, harmonic average is used.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_FrictMat_FrictMat_KnKsPBPhys(inherits IPhysFunctor Functor Serializable)

EXPERIMENTAL. Ip2 functor for KnKsPBPhys

property Knormal

Volumetric stiffness in the contact normal direction (units: stress/length)

property Kshear

Volumetric stiffness in the contact shear direction (units: stress/length)

property bases

Ordered list of types (as strings) this functor accepts.

property cohesion

Cohesion (stress units)

property cohesionBroken

Whether cohesion is already broken

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property intactRock

Whether to consider cohesive force in the Mohr-Coulomb criterion, if Law2_SCG_KnKsPBPhys_KnKsPBLaw.allowBreakage=False and cohesionBroken=False

property kn_i

Volumetric stiffness in the contact normal direction (units: stress/length) when isBoundary=True for one of the PBs

property ks_i

Volumetric stiffness in the contact shear direction (units: stress/length) when isBoundary=True for one of the PBs

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property phi_b

Basic friction angle (degrees)

property tension

Tension (stress units)

property tensionBroken

Whether tension is already broken

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property useFaceProperties

Whether to get face properties from the intersecting particles

property viscousDamping

Viscous damping

class yade.wrapper.Ip2_FrictMat_FrictMat_KnKsPhys(inherits IPhysFunctor Functor Serializable)

EXPERIMENTAL. Ip2 functor for KnKsPhys

property Knormal

Volumetric stiffness in the contact normal direction (units: stress/length)

property Kshear

Volumetric stiffness in the contact shear direction (units: stress/length)

property bases

Ordered list of types (as strings) this functor accepts.

property brittleLength

Shear length for degradation

property cohesion

Cohesion

property cohesionBroken

Whether cohesion is already broken

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property kn_i

Currently, we assume kn_i and Knormal are adopting the same value in Ip2 initialisation

property ks_i

Currently, we assume ks_i and Kshear are adopting the same value in Ip2 initialisation

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property maxClosure

not fully in use

property phi_b

Basic friction angle

property tension

Tension

property tensionBroken

Whether tension is already broken

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property useFaceProperties

Whether to get face properties from the intersecting particles

property viscousDamping

Viscous damping ratio \(\beta_n\), see Ip2_FrictMat_FrictMat_MindlinPhys documentation

class yade.wrapper.Ip2_FrictMat_FrictMat_LubricationPhys(inherits IPhysFunctor Functor Serializable)

Ip2 creating LubricationPhys from two Material instances.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property eps

Roughness: fraction of radius enlargement for contact asperities

property eta

Fluid viscosity [Pa.s]

property keps

Dimensionless stiffness coefficient of the asperities, relative to the stiffness of the surface (the final stiffness will be keps*kn). Only used with resolution method=0, with resolution>0 it is always equal to 1. [-]

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_FrictMat_FrictMat_MindlinCapillaryPhys(inherits IPhysFunctor Functor Serializable)

RelationShips to use with Law2_ScGeom_CapillaryPhys_Capillarity

In these RelationShips all the interaction attributes are computed.

Warning

as in the others Ip2 functors, most of the attributes are computed only once, when the interaction is new.

property bases

Ordered list of types (as strings) this functor accepts.

property betan

Normal viscous damping ratio \(\beta_n\).

property betas

Shear viscous damping ratio \(\beta_s\).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property en

Normal coefficient of restitution \(e_n\).

property es

Shear coefficient of restitution \(e_s\).

property eta

Coefficient to determine the plastic bending moment

property gamma

Surface energy parameter [J/m^2] per each unit contact surface, to derive DMT formulation from HM

property krot

Rotational stiffness for moment contact law

property ktwist

Torsional stiffness for moment contact law

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_FrictMat_FrictMat_MindlinPhys(inherits IPhysFunctor Functor Serializable)

Calculate physical parameters needed to obtain the normal and shear stiffness values according to the Hertz-Mindlin formulation (no slip solution).\

There are two available viscous damping models for (1) constant and (2) velocity-dependent coefficient of restitution. In both cases, the viscous forces are calculated as \(F_{n,viscous}=c_n \cdot v_n\) (\(F_{s,viscous}=c_s \cdot v_s\)), where \(c_n\) (\(c_s\)) the normal (shear) viscous damping coefficient and \(v_n\) (\(v_s\)) the normal (shear) component of the relative velocity.\

  1. Constant coefficient of restitution: The normal (shear) viscous damping coefficient is given by \(c_n=2 \cdot \beta_n \cdot \sqrt{m_{bar} \cdot k_n}\) (\(c_s=2 \cdot \beta_s \cdot \sqrt{m_{bar} \cdot k_s}\)), where \(m_{bar}\) the effective mass, \(\beta_n\) (\(\beta_s\)) normal (shear) viscous damping ratios, and \(k_{n}=2 \cdot E^* \cdot \sqrt{R^* \cdot \u_N}\) (\(k_{s}=8 \cdot G^* \cdot \sqrt{R \cdot u_N}\)) the normal (shear) tangential stiffness values, according to the formulations of Hertz and Mindlin, respectively, and \(R^*\), \(E^*\), \(G^*\) the effective radius, elastic and shear moduli of the interacting particles.

The normal (shear) viscous damping coefficient \(c_n\) (\(c_s\)) can be specified either by providing the normal (shear) viscous damping ratio \(\beta_n\) (\(\beta_s\)), which is then assigned directly to MindlinPhys.betan (MindlinPhys.betas), or by defining the normal (shear) coefficient of restitution \(e_n\) (\(e_s\)) in which case the viscous damping ratios are computed using formula (B6) of [Thornton2013], written specifically for the Hertz-Mindlin model (no-slip solution) where the end of contact is considered to take place once the normal force is zero and not once the overlap is zero, thus not allowing attractive elastic forces for non-adhesive contacts, as also discussed in [Schwager2007].

  1. Velocity-dependent coefficient of restitution: The viscous damping coefficients are given by \(c_n=c_s=A \cdot k_n\), where \(A\) a dissipative constant. To calculate this constant, the user has to provide a coefficient of restitution (\(e_n\)) and an impact velocity (\(v_n\)) corresponding to this \(e_n\), as described in [Mueller2011].

The following rules apply: # It is an error to specify both \(e_n\) and \(\beta_n\) (\(e_s\) and \(\beta_s\)) or both \(v_n\) and \(\beta_n\).

# If neither \(e_n\) nor \(\beta_n\) is given, then MindlinPhys.betan will be zero and no viscous damping will be considered.

# If neither \(e_s\) nor \(\beta_s\) is given, the value of Ip2_FrictMat_FrictMat_MindlinPhys.en is used for Ip2_FrictMat_FrictMat_MindlinPhys.es and the value of MindlinPhys.betan is used for MindlinPhys.betas, respectively.

The \(e_n\), \(\beta_n\), \(e_s\), \(\beta_s\), \(v_n\) are MatchMaker objects; they can be constructed from float values to always return constant values.

property bases

Ordered list of types (as strings) this functor accepts.

property betan

Normal viscous damping ratio \(\beta_n\).

property betas

Shear viscous damping ratio \(\beta_s\).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property en

Normal coefficient of restitution \(e_n\).

property es

Shear coefficient of restitution \(e_s\).

property eta

Coefficient to determine the plastic bending moment

property frictAngle

Instance of MatchMaker determining how to compute the friction angle of an interaction. If None, minimum value is used.

property gamma

Surface energy parameter [J/m^2] per each unit contact surface, to derive DMT formulation from HM

property krot

Rotational stiffness for moment contact law

property ktwist

Torsional stiffness for moment contact law

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vn

Impact velocity corresponding to the en value to calculate the dissipative constant \(An\) used in the viscous damping model of [Mueller2011].

class yade.wrapper.Ip2_FrictMat_FrictMat_MultiFrictPhys(inherits IPhysFunctor Functor Serializable)

Create a MultiFrictPhys from two FrictMats. Mother contact stiffnesses (MultiFrictPhys.kn and MultiFrictPhys.ks) are directly assigned from below attributes, independent of FrictMat properties. Global friction angle (MultiFrictPhys.frictAngle) is taken as the minimum of the 2 material friction angles (FrictMat.frictionAngle).

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property kn

Chosen value for MultiFrictPhys.kn

property ks

Chosen value for MultiFrictPhys.ks

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_FrictMat_FrictMat_ViscoFrictPhys(inherits Ip2_FrictMat_FrictMat_FrictPhys IPhysFunctor Functor Serializable)

Create a FrictPhys from two FrictMats. The compliance of one sphere under symetric point loads is defined here as 1/(E.r), with E the stiffness of the sphere and r its radius, and corresponds to a compliance 1/(2.E.r)=1/(E.D) from each contact point. The compliance of the contact itself will be the sum of compliances from each sphere, i.e. 1/(E.D1)+1/(E.D2) in the general case, or 1/(E.r) in the special case of equal sizes. Note that summing compliances corresponds to an harmonic average of stiffnesss, which is how kn is actually computed in the Ip2_FrictMat_FrictMat_FrictPhys functor.

The shear stiffness ks of one sphere is defined via the material parameter ElastMat::poisson, as ks=poisson*kn, and the resulting shear stiffness of the interaction will be also an harmonic average.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property frictAngle

Instance of MatchMaker determining how to compute interaction’s friction angle. If None, minimum value is used.

property kn

Instance of MatchMaker determining how to compute interaction’s normal stiffness. If None, harmonic average is used.

property ks

Instance of MatchMaker determining how to compute interaction’s shear stiffness. If None, harmonic average is used.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_FrictMat_FrictViscoMat_FrictViscoPhys(inherits IPhysFunctor Functor Serializable)

Converts a FrictMat and FrictViscoMat instance to FrictViscoPhys with corresponding parameters. Basically this functor corresponds to Ip2_FrictMat_FrictMat_FrictPhys with the only difference that damping in normal direction can be considered.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property frictAngle

Instance of MatchMaker determining how to compute interaction’s friction angle. If None, minimum value is used.

property kRatio

Instance of MatchMaker determining how to compute interaction’s shear contact stiffnesses. If this value is not given the elastic properties (i.e. poisson) of the two colliding materials are used to calculate the stiffness.

property kn

Instance of MatchMaker determining how to compute interaction’s normal contact stiffnesses. If this value is not given the elastic properties (i.e. young) of the two colliding materials are used to calculate the stiffness.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_FrictMat_PolyhedraMat_FrictPhys(inherits IPhysFunctor Functor Serializable)
property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_FrictViscoMat_FrictViscoMat_FrictViscoPhys(inherits IPhysFunctor Functor Serializable)

Converts 2 FrictViscoMat instances to FrictViscoPhys with corresponding parameters. Basically this functor corresponds to Ip2_FrictMat_FrictMat_FrictPhys with the only difference that damping in normal direction can be considered.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property frictAngle

Instance of MatchMaker determining how to compute interaction’s friction angle. If None, minimum value is used.

property kRatio

Instance of MatchMaker determining how to compute interaction’s shear contact stiffnesses. If this value is not given the elastic properties (i.e. poisson) of the two colliding materials are used to calculate the stiffness.

property kn

Instance of MatchMaker determining how to compute interaction’s normal contact stiffnesses. If this value is not given the elastic properties (i.e. young) of the two colliding materials are used to calculate the stiffness.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(inherits IPhysFunctor Functor Serializable)

Converts 2 JCFpmMat instances to one JCFpmPhys instance, with corresponding parameters. See JCFpmMat and [Duriez2016] for details

property bases

Ordered list of types (as strings) this functor accepts.

property cohesiveTresholdIteration

should new contacts be cohesive? If strictly negativ, they will in any case. If positiv, they will before this iter, they won’t afterward.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property weibullCutOffMax

Factor that cuts off the largest values of the weibull distributed interaction areas.

property weibullCutOffMin

Factor that cuts off the smallest values of the weibull distributed interaction areas.

property xSectionWeibullScaleParameter

Scale parameter used to generate interaction radii for the crosssectional areas (changing strength criteria only) according to Weibull distribution. Activated for any value other than 0. Needs to be combined with a shape parameter

property xSectionWeibullShapeParameter

Shape parameter used to generate interaction radii for the crossSectional areas (changing strength criteria only) according to Weibull distribution. Activated for any value other than 0. Needs to be combined with a scale parameter)

class yade.wrapper.Ip2_LudingMat_LudingMat_LudingPhys(inherits IPhysFunctor Functor Serializable)

Convert 2 instances of LudingMat to LudingPhys using the rule of consecutive connection.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_MortarMat_MortarMat_MortarPhys(inherits IPhysFunctor Functor Serializable)

Ip2 creating MortarPhys from two MortarMat instances.

property bases

Ordered list of types (as strings) this functor accepts.

property cohesiveThresholdIter

Should new contacts be cohesive? They will before this iter#, they will not be afterwards. If <=0, they will never be.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_PartialSatMat_PartialSatMat_MindlinPhys(inherits IPhysFunctor Functor Serializable)

PartialSat variant of HertzMindlin

Calculate some physical parameters needed to obtain the normal and shear stiffnesses according to the Hertz-Mindlin formulation (as implemented in PFC).

Viscous parameters can be specified either using coefficients of restitution (\(e_n\), \(e_s\)) or viscous damping ratio (\(\beta_n\), \(\beta_s\)). The following rules apply: #. If the \(\beta_n\) (\(\beta_s\)) ratio is given, it is assigned to MindlinPhys.betan (MindlinPhys.betas) directly. #. If \(e_n\) is given, MindlinPhys.betan is computed using \(\beta_n=-(\log e_n)/\sqrt{\pi^2+(\log e_n)^2}\). The same applies to \(e_s\), MindlinPhys.betas. #. It is an error (exception) to specify both \(e_n\) and \(\beta_n\) (\(e_s\) and \(\beta_s\)). #. If neither \(e_n\) nor \(\beta_n\) is given, zero value for MindlinPhys.betan is used; there will be no viscous effects. #.If neither \(e_s\) nor \(\beta_s\) is given, the value of MindlinPhys.betan is used for MindlinPhys.betas as well.

The \(e_n\), \(\beta_n\), \(e_s\), \(\beta_s\) are MatchMaker objects; they can be constructed from float values to always return constant value.

See scripts/test/shots.py for an example of specifying \(e_n\) based on combination of parameters.

property bases

Ordered list of types (as strings) this functor accepts.

property betan

Normal viscous damping ratio \(\beta_n\).

property betas

Shear viscous damping ratio \(\beta_s\).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property en

Normal coefficient of restitution \(e_n\).

property es

Shear coefficient of restitution \(e_s\).

property eta

Coefficient to determine the plastic bending moment

property frictAngle

Instance of MatchMaker determining how to compute the friction angle of an interaction. If None, minimum value is used.

property gamma

Surface energy parameter [J/m^2] per each unit contact surface, to derive DMT formulation from HM

property krot

Rotational stiffness for moment contact law

property ktwist

Torsional stiffness for moment contact law

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_PolyhedraMat_PolyhedraMat_PolyhedraPhys(inherits IPhysFunctor Functor Serializable)

Computes the interaction properties from the material properties of the two interacting bodies 1,2. Contact friction angle is taken as the minimum of the two frictionAngle, and contact stiffnesses kn and ks obey \(1/k_n = 1/Y_1 + 1/Y_2\) and \(1/k_s = 1/(Y_1 P_1) + 1/(Y_2 P_2)\), with \(Y_i\) and \(P_i\) corresponding to young and poisson for 1 and 2. The unit system to interpret these equations and quantities depend on Law2_PolyhedraGeom_PolyhedraPhys_Volumetric.volumePower.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_ViscElCapMat_ViscElCapMat_ViscElCapPhys(inherits Ip2_ViscElMat_ViscElMat_ViscElPhys IPhysFunctor Functor Serializable)

Convert 2 instances of ViscElCapMat to ViscElCapPhys using the rule of consecutive connection.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property en

Instance of MatchMaker determining restitution coefficient in normal direction

property et

Instance of MatchMaker determining restitution coefficient in tangential direction

property frictAngle

Instance of MatchMaker determining how to compute interaction’s friction angle. If None, minimum value is used.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property tc

Instance of MatchMaker determining contact time

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_ViscElMat_ViscElMat_ViscElPhys(inherits IPhysFunctor Functor Serializable)

Convert 2 instances of ViscElMat to ViscElPhys using the rule of consecutive connection.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property en

Instance of MatchMaker determining restitution coefficient in normal direction

property et

Instance of MatchMaker determining restitution coefficient in tangential direction

property frictAngle

Instance of MatchMaker determining how to compute interaction’s friction angle. If None, minimum value is used.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property tc

Instance of MatchMaker determining contact time

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Ip2_WireMat_WireMat_WirePhys(inherits IPhysFunctor Functor Serializable)

Converts 2 WireMat instances to WirePhys with corresponding parameters.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property linkThresholdIteration

Iteration to create the link.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

IPhysDispatcher

class yade.wrapper.IPhysDispatcher(inherits Dispatcher Engine Serializable)

Dispatcher calling functors based on received argument type(s).

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispFunctor((IPhysDispatcher)arg1, (Material)arg2, (Material)arg3) IPhysFunctor :

Return functor that would be dispatched for given argument(s); None if no dispatch; ambiguous dispatch throws.

dispMatrix((IPhysDispatcher)arg1[, (bool)names=True]) dict :

Return dictionary with contents of the dispatch matrix.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property functors

Functors associated with this dispatcher.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

Constitutive laws

LawFunctor

digraph LawFunctor {
        rankdir=RL;
        margin="0.2,0.05";
        "LawFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.LawFunctor"];
        "Law2_PolyhedraGeom_PolyhedraPhys_Volumetric" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_PolyhedraGeom_PolyhedraPhys_Volumetric"];
        "Law2_PolyhedraGeom_PolyhedraPhys_Volumetric" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_LudingPhys_Basic" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_LudingPhys_Basic"];
        "Law2_ScGeom_LudingPhys_Basic" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_GridCoGridCoGeom_FrictPhys_CundallStrack" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_GridCoGridCoGeom_FrictPhys_CundallStrack"];
        "Law2_GridCoGridCoGeom_FrictPhys_CundallStrack" -> "Law2_ScGeom_FrictPhys_CundallStrack" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_ViscElPhys_Basic" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_ViscElPhys_Basic"];
        "Law2_ScGeom_ViscElPhys_Basic" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_CpmPhys_Cpm" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_CpmPhys_Cpm"];
        "Law2_ScGeom_CpmPhys_Cpm" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_FrictPhys_CundallStrack" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_FrictPhys_CundallStrack"];
        "Law2_ScGeom_FrictPhys_CundallStrack" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ChCylGeom6D_CohFrictPhys_CohesionMoment" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ChCylGeom6D_CohFrictPhys_CohesionMoment"];
        "Law2_ChCylGeom6D_CohFrictPhys_CohesionMoment" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_CylScGeom6D_CohFrictPhys_CohesionMoment" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_CylScGeom6D_CohFrictPhys_CohesionMoment"];
        "Law2_CylScGeom6D_CohFrictPhys_CohesionMoment" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_CylScGeom_FrictPhys_CundallStrack" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_CylScGeom_FrictPhys_CundallStrack"];
        "Law2_CylScGeom_FrictPhys_CundallStrack" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom6D_InelastCohFrictPhys_CohesionMoment" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom6D_InelastCohFrictPhys_CohesionMoment"];
        "Law2_ScGeom6D_InelastCohFrictPhys_CohesionMoment" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGridCoGeom_FrictPhys_CundallStrack" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGridCoGeom_FrictPhys_CundallStrack"];
        "Law2_ScGridCoGeom_FrictPhys_CundallStrack" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM"];
        "Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_L6Geom_FrictPhys_Linear" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_L6Geom_FrictPhys_Linear"];
        "Law2_L6Geom_FrictPhys_Linear" -> "Law2_L3Geom_FrictPhys_ElPerfPl" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_FrictViscoPhys_CundallStrackVisco" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_FrictViscoPhys_CundallStrackVisco"];
        "Law2_ScGeom_FrictViscoPhys_CundallStrackVisco" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_MindlinPhys_HertzWithLinearShear" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_MindlinPhys_HertzWithLinearShear"];
        "Law2_ScGeom_MindlinPhys_HertzWithLinearShear" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGridCoGeom_CohFrictPhys_CundallStrack" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGridCoGeom_CohFrictPhys_CundallStrack"];
        "Law2_ScGridCoGeom_CohFrictPhys_CundallStrack" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_MortarPhys_Lourenco" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_MortarPhys_Lourenco"];
        "Law2_ScGeom_MortarPhys_Lourenco" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_SCG_KnKsPhys_KnKsLaw" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_SCG_KnKsPhys_KnKsLaw"];
        "Law2_SCG_KnKsPhys_KnKsLaw" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_VolumeGeom_ViscoFrictPhys_Elastic" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_VolumeGeom_ViscoFrictPhys_Elastic"];
        "Law2_VolumeGeom_ViscoFrictPhys_Elastic" -> "Law2_VolumeGeom_FrictPhys_Elastic" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_PotentialLubricationPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_PotentialLubricationPhys"];
        "Law2_ScGeom_PotentialLubricationPhys" -> "Law2_ScGeom_ImplicitLubricationPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_MindlinPhysCDM_HertzMindlinCDM" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_MindlinPhysCDM_HertzMindlinCDM"];
        "Law2_ScGeom_MindlinPhysCDM_HertzMindlinCDM" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_TTetraSimpleGeom_NormPhys_Simple" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_TTetraSimpleGeom_NormPhys_Simple"];
        "Law2_TTetraSimpleGeom_NormPhys_Simple" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_ImplicitLubricationPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_ImplicitLubricationPhys"];
        "Law2_ScGeom_ImplicitLubricationPhys" -> "Law2_ScGeom_VirtualLubricationPhys" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_SCG_KnKsPBPhys_KnKsPBLaw" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_SCG_KnKsPBPhys_KnKsPBLaw"];
        "Law2_SCG_KnKsPBPhys_KnKsPBLaw" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_MindlinPhys_MindlinDeresiewitz" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_MindlinPhys_MindlinDeresiewitz"];
        "Law2_ScGeom_MindlinPhys_MindlinDeresiewitz" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_VirtualLubricationPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_VirtualLubricationPhys"];
        "Law2_ScGeom_VirtualLubricationPhys" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_BubblePhys_Bubble" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_BubblePhys_Bubble"];
        "Law2_ScGeom_BubblePhys_Bubble" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_ViscElCapPhys_Basic" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_ViscElCapPhys_Basic"];
        "Law2_ScGeom_ViscElCapPhys_Basic" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_MindlinPhys_Mindlin" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_MindlinPhys_Mindlin"];
        "Law2_ScGeom_MindlinPhys_Mindlin" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_VolumeGeom_FrictPhys_Elastic" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_VolumeGeom_FrictPhys_Elastic"];
        "Law2_VolumeGeom_FrictPhys_Elastic" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_WirePhys_WirePM" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_WirePhys_WirePM"];
        "Law2_ScGeom_WirePhys_WirePM" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom_ViscoFrictPhys_CundallStrack" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom_ViscoFrictPhys_CundallStrack"];
        "Law2_ScGeom_ViscoFrictPhys_CundallStrack" -> "Law2_ScGeom_FrictPhys_CundallStrack" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_MultiScGeom_MultiFrictPhys_CundallStrack" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_MultiScGeom_MultiFrictPhys_CundallStrack"];
        "Law2_MultiScGeom_MultiFrictPhys_CundallStrack" -> "Law2_ScGeom_FrictPhys_CundallStrack" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_ScGeom6D_CohFrictPhys_CohesionMoment" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_ScGeom6D_CohFrictPhys_CohesionMoment"];
        "Law2_ScGeom6D_CohFrictPhys_CohesionMoment" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Law2_L3Geom_FrictPhys_ElPerfPl" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Law2_L3Geom_FrictPhys_ElPerfPl"];
        "Law2_L3Geom_FrictPhys_ElPerfPl" -> "LawFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of LawFunctor.

class yade.wrapper.LawFunctor(inherits Functor Serializable)

Functor for applying constitutive laws on interactions.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ChCylGeom6D_CohFrictPhys_CohesionMoment(inherits LawFunctor Functor Serializable)

Law for linear compression, and Mohr-Coulomb plasticity surface without cohesion. This law implements the classical linear elastic-plastic law from [CundallStrack1979] (see also [Pfc3dManual30]). The normal force is (with the convention of positive tensile forces) \(F_n=\min(k_n u_n, 0)\). The shear force is \(F_s=k_s u_s\), the plasticity condition defines the maximum value of the shear force : \(F_s^{\max}=F_n\tan(\phi)\), with \(\phi\) the friction angle.

Note

This law is well tested in the context of triaxial simulation, and has been used for a number of published results (see e.g. [Scholtes2009b] and other papers from the same authors). It is generalised by Law2_ScGeom6D_CohFrictPhys_CohesionMoment, which adds cohesion and moments at contact.

property always_use_moment_law

If true, use bending/twisting moments at all contacts. If false, compute moments only for cohesive contacts.

property bases

Ordered list of types (as strings) this functor accepts.

property creep_viscosity

creep viscosity [Pa.s/m]. probably should be moved to Ip2_CohFrictMat_CohFrictMat_CohFrictPhys…

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

property shear_creep

activate creep on the shear force, using CohesiveFrictionalContactLaw::creep_viscosity.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property twist_creep

activate creep on the twisting moment, using CohesiveFrictionalContactLaw::creep_viscosity.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property useIncrementalForm

use the incremental formulation to compute bending and twisting moments. Creep on the twisting moment is not included in such a case.

class yade.wrapper.Law2_CylScGeom6D_CohFrictPhys_CohesionMoment(inherits LawFunctor Functor Serializable)

This law generalises Law2_CylScGeom_FrictPhys_CundallStrack by adding cohesion and moments at contact.

property always_use_moment_law

If true, use bending/twisting moments at all contacts. If false, compute moments only for cohesive contacts.

property bases

Ordered list of types (as strings) this functor accepts.

property creep_viscosity

creep viscosity [Pa.s/m]. probably should be moved to Ip2_CohFrictMat_CohFrictMat_CohFrictPhys…

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

property shear_creep

activate creep on the shear force, using CohesiveFrictionalContactLaw::creep_viscosity.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property twist_creep

activate creep on the twisting moment, using CohesiveFrictionalContactLaw::creep_viscosity.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property useIncrementalForm

use the incremental formulation to compute bending and twisting moments. Creep on the twisting moment is not included in such a case.

class yade.wrapper.Law2_CylScGeom_FrictPhys_CundallStrack(inherits LawFunctor Functor Serializable)

Law for linear compression, and Mohr-Coulomb plasticity surface without cohesion. This law implements the classical linear elastic-plastic law from [CundallStrack1979] (see also [Pfc3dManual30]). The normal force is (with the convention of positive tensile forces) \(F_n=\min(k_n u_n, 0)\). The shear force is \(F_s=k_s u_s\), the plasticity condition defines the maximum value of the shear force : \(F_s^{\max}=F_n\tan(\phi)\), with \(\phi\) the friction angle.

Note

This law uses ScGeom.

Note

This law is well tested in the context of triaxial simulation, and has been used for a number of published results (see e.g. [Scholtes2009b] and other papers from the same authors). It is generalised by Law2_ScGeom6D_CohFrictPhys_CohesionMoment, which adds cohesion and moments at contact.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_GridCoGridCoGeom_FrictPhys_CundallStrack(inherits Law2_ScGeom_FrictPhys_CundallStrack LawFunctor Functor Serializable)

Frictional elastic contact law between two gridConnection . See Law2_ScGeom_FrictPhys_CundallStrack for more details.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

elasticEnergy((Law2_ScGeom_FrictPhys_CundallStrack)arg1) float :

Compute and return the total elastic energy in all “FrictPhys” contacts

initPlasticDissipation((Law2_ScGeom_FrictPhys_CundallStrack)arg1, (float)arg2) None :

Initialize cummulated plastic dissipation to a value (0 by default).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

plasticDissipation((Law2_ScGeom_FrictPhys_CundallStrack)arg1) float :

Total energy dissipated in plastic slips at all FrictPhys contacts. Computed only if Law2_ScGeom_FrictPhys_CundallStrack::traceEnergy is true.

property sphericalBodies

If true, compute branch vectors from radii (faster), else use contactPoint-position. Turning this flag true is safe for sphere-sphere contacts and a few other specific cases. It will give wrong values of torques on facets or boxes.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property traceEnergy

Define the total energy dissipated in plastic slips at all contacts. This will trace only plastic energy in this law, see O.trackEnergy for a more complete energies tracing

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_L3Geom_FrictPhys_ElPerfPl(inherits LawFunctor Functor Serializable)

Basic law for testing L3Geom; it bears no cohesion (unless noBreak is True), and plastic slip obeys the Mohr-Coulomb criterion (unless noSlip is True).

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property noBreak

Do not break contacts when particles separate.

property noSlip

No plastic slipping.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_L6Geom_FrictPhys_Linear(inherits Law2_L3Geom_FrictPhys_ElPerfPl LawFunctor Functor Serializable)

Basic law for testing L6Geom – linear in both normal and shear sense, without slip or breakage.

property bases

Ordered list of types (as strings) this functor accepts.

property charLen

Characteristic length with the meaning of the stiffness ratios bending/shear and torsion/normal.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property noBreak

Do not break contacts when particles separate.

property noSlip

No plastic slipping.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_MultiScGeom_MultiFrictPhys_CundallStrack(inherits Law2_ScGeom_FrictPhys_CundallStrack LawFunctor Functor Serializable)

Applies Law2_ScGeom_FrictPhys_CundallStrack at each contact point of a (yref:MultiScGeom;yref:MultiFrictPhys) contact [Duriez2023].

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

elasticEnergy((Law2_ScGeom_FrictPhys_CundallStrack)arg1) float :

Compute and return the total elastic energy in all “FrictPhys” contacts

initPlasticDissipation((Law2_ScGeom_FrictPhys_CundallStrack)arg1, (float)arg2) None :

Initialize cummulated plastic dissipation to a value (0 by default).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

plasticDissipation((Law2_ScGeom_FrictPhys_CundallStrack)arg1) float :

Total energy dissipated in plastic slips at all FrictPhys contacts. Computed only if Law2_ScGeom_FrictPhys_CundallStrack::traceEnergy is true.

property sphericalBodies

If true, compute branch vectors from radii (faster), else use contactPoint-position. Turning this flag true is safe for sphere-sphere contacts and a few other specific cases. It will give wrong values of torques on facets or boxes.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property traceEnergy

Define the total energy dissipated in plastic slips at all contacts. This will trace only plastic energy in this law, see O.trackEnergy for a more complete energies tracing

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_PolyhedraGeom_PolyhedraPhys_Volumetric(inherits LawFunctor Functor Serializable)

Calculate physical response of 2 Polyhedra in interaction, based on penetration configuration given by PolyhedraGeom. Normal force is proportional to the volume of intersection

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

elasticEnergy((Law2_PolyhedraGeom_PolyhedraPhys_Volumetric)arg1) float :

Compute and return the total elastic energy in all “FrictPhys” contacts

initPlasticDissipation((Law2_PolyhedraGeom_PolyhedraPhys_Volumetric)arg1, (float)arg2) None :

Initialize cummulated plastic dissipation to a value (0 by default).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

plasticDissipation((Law2_PolyhedraGeom_PolyhedraPhys_Volumetric)arg1) float :

Total energy dissipated in plastic slips at all FrictPhys contacts. Computed only if Law2_PolyhedraGeom_PolyhedraPhys_Volumetric::traceEnergy is true.

property shearForce

Shear force from last step of the interaction that has just been handled by InteractionLoop (for debugging 2 bodies simulations, mostly)

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property traceEnergy

Define the total energy dissipated in plastic slips at all contacts. This will trace only plastic energy in this law, see O.trackEnergy for a more complete energies tracing

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property volumePower

Power of volume used in evaluation of normal force. Default is 1.0 - normal force is linearly proportional to volume. 1.0/3.0 would mean that normal force is proportional to the cube root of volume, approximation of penetration depth.

class yade.wrapper.Law2_SCG_KnKsPBPhys_KnKsPBLaw(inherits LawFunctor Functor Serializable)

Law for linear compression, without cohesion and Mohr-Coulomb plasticity surface.

Note

This law uses ScGeom; there is also functionally equivalent Law2_Dem3DofGeom_FrictPhys_Basic, which uses Dem3DofGeom (sphere-box interactions are not implemented for the latest).

property Talesnick

Use contact law developed for validation against model test

property allowBreakage

Allow cohesion to break. Once broken, cohesion = 0

property allowViscousAttraction

Whether to allow attractive forces due to viscous damping

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

elasticEnergy((Law2_SCG_KnKsPBPhys_KnKsPBLaw)arg1) float :

Compute and return the total elastic energy in all “FrictPhys” contacts. Computed only if Law2_SCG_KnKsPBPhys_KnKsPBLaw::traceEnergy is true.

initPlasticDissipation((Law2_SCG_KnKsPBPhys_KnKsPBLaw)arg1, (float)arg2) None :

Initialize cummulated plastic dissipation to a value (0 by default).

property initialOverlapDistance

Initial overlap distance, defining the offset distance for tension overlap, i.e. negative overlap.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

normDampDissip((Law2_SCG_KnKsPBPhys_KnKsPBLaw)arg1) float :

Total energy dissipated in normal viscous damping. Computed only if Law2_SCG_KnKsPBPhys_KnKsPBLaw::traceEnergy is true.

plasticDissipation((Law2_SCG_KnKsPBPhys_KnKsPBLaw)arg1) float :

Total energy dissipated in plastic slips at all FrictPhys contacts. Computed only if Law2_SCG_KnKsPBPhys_KnKsPBLaw::traceEnergy is true.

property preventGranularRatcheting

bool to avoid granular ratcheting

ratioSlidingContacts((Law2_SCG_KnKsPBPhys_KnKsPBLaw)arg1) float :

Return the ratio between the number of contacts sliding to the total number at a given time.

shearDampDissip((Law2_SCG_KnKsPBPhys_KnKsPBLaw)arg1) float :

Total energy dissipated in shear viscous damping. Computed only if Law2_SCG_KnKsPBPhys_KnKsPBLaw::traceEnergy is true.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property traceEnergy

Whether to calculate energy terms (elastic potential energy (normal and shear), plastic dissipation due to friction and dissipation of energy (normal and tangential) due to viscous damping)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_SCG_KnKsPhys_KnKsLaw(inherits LawFunctor Functor Serializable)

Law for linear compression, without cohesion and Mohr-Coulomb plasticity surface.

Note

This law uses ScGeom; there is also functionally equivalent Law2_Dem3DofGeom_FrictPhys_Basic, which uses Dem3DofGeom (sphere-box interactions are not implemented for the latest).

property Talesnick

Use contact law developed for validation against model test

property allowBreakage

Allow cohesion to break. Once broken, cohesion = 0

property allowViscousAttraction

Whether to allow attractive forces due to viscous damping

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

elasticEnergy((Law2_SCG_KnKsPhys_KnKsLaw)arg1) float :

Compute and return the total elastic energy in all “FrictPhys” contacts. Computed only if Law2_SCG_KnKsPhys_KnKsLaw::traceEnergy is true.

initPlasticDissipation((Law2_SCG_KnKsPhys_KnKsLaw)arg1, (float)arg2) None :

Initialize cummulated plastic dissipation to a value (0 by default).

property initialOverlapDistance

Initial overlap distance, defining the offset distance for tension overlap, i.e. negative overlap.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

normDampDissip((Law2_SCG_KnKsPhys_KnKsLaw)arg1) float :

Total energy dissipated in normal viscous damping. Computed only if Law2_SCG_KnKsPhys_KnKsLaw::traceEnergy is true.

plasticDissipation((Law2_SCG_KnKsPhys_KnKsLaw)arg1) float :

Total energy dissipated in plastic slips at all FrictPhys contacts. Computed only if Law2_SCG_KnKsPhys_KnKsLaw::traceEnergy is true.

property preventGranularRatcheting

bool to avoid granular ratcheting

ratioSlidingContacts((Law2_SCG_KnKsPhys_KnKsLaw)arg1) float :

Return the ratio between the number of contacts sliding to the total number at a given time.

shearDampDissip((Law2_SCG_KnKsPhys_KnKsLaw)arg1) float :

Total energy dissipated in shear viscous damping. Computed only if Law2_SCG_KnKsPhys_KnKsLaw::traceEnergy is true.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property traceEnergy

Define the total energy dissipated in plastic slips at all contacts.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom6D_CohFrictPhys_CohesionMoment(inherits LawFunctor Functor Serializable)

Law for linear traction-compression-bending-twisting, with cohesion+friction and Mohr-Coulomb plasticity surface. This law adds adhesion and moments to Law2_ScGeom_FrictPhys_CundallStrack.

The normal force is (with the convention of positive tensile forces) \(F_n=min(k_n*(u_n-u_n^p), a_n)\), with \(a_n\) the normal adhesion and \(u_n^p\) the plastic part of normal displacement. The shear force is \(F_s=k_s*u_s\), the plasticity condition defines the maximum value of the shear force, by default \(F_s^{max}=F_n*tan(\phi)+a_s\), with \(\phi\) the friction angle and \(a_s\) the shear adhesion. If CohFrictPhys::cohesionDisablesFriction is True, friction is ignored as long as adhesion is active, and the maximum shear force is only \(F_s^{max}=a_s\).

If the maximum tensile or maximum shear force is reached and CohFrictPhys::fragile =True (default), the cohesive link is broken, and \(a_n, a_s\) are set back to zero. If a tensile force is present, the contact is lost, else the shear strength is \(F_s^{max}=F_n*tan(\phi)\). If CohFrictPhys::fragile =False, the behaviour is perfectly plastic, and the shear strength is kept constant.

If Law2_ScGeom6D_CohFrictPhys_CohesionMoment::momentRotationLaw =True, bending and twisting moments are computed using a linear law with moduli respectively \(k_t\) and \(k_r\), so that the moments are : \(M_b=k_b*\Theta_b\) and \(M_t=k_t*\Theta_t\), with \(\Theta_{b,t}\) the relative rotations between interacting bodies (details can be found in [Bourrier2013]). The maximum values of the moments depend on constant terms (CohFrictPhys::rollingAdhesion and CohFrictPhys::twistingAdhesion) and on terms which depend on the normal force \(F_n\) through the generalized friction coefficients CohFrictPhys::maxRollPl and CohFrictPhys::maxTwistPl; the instantaneous rolling resistance is thus \(a - F_n*\eta\) if \(a\) is adhesion and \(\eta\) is the friction coefficient.

Creep at contact is implemented in this law, as defined in [Hassan2010]. If activated, there is a viscous behaviour of the shear and twisting components, and the evolution of the elastic parts of shear displacement and relative twist is given by \(du_{s,e}/dt=-F_s/\nu_s\) and \(d\Theta_{t,e}/dt=-M_t/\nu_t\).

For turning adhesion on or off during a simulation, see Ip2_CohFrictMat_CohFrictMat_CohFrictPhys::setCohesion (subsequently, it is possible to modify the adhesion values directly, e.g. i.phys.shearAdhesion=…)

property always_use_moment_law

If false, compute moments only for cohesive contacts, broken contacts will have only normal and shear forces. If true, compute bending/twisting moments at all contacts and use the frictional coefficients CohFrictMat::etaRoll and CohFrictMat::etaTwist to define the strength of the broken contacts.

property bases

Ordered list of types (as strings) this functor accepts.

bendingElastEnergy((Law2_ScGeom6D_CohFrictPhys_CohesionMoment)arg1) float :

Compute bending elastic energy.

checkConsistency((Law2_ScGeom6D_CohFrictPhys_CohesionMoment)arg1, (CohFrictPhys)ip, (int)id1, (int)id2) None :

Runs consistency checks on an interaction physics and warn if some issues are suspected (e.g. if there is finite cohesion on the shear force and pure elasticity on bending moment). Most inconsistencies should occur when interaction properties are modified in a script; they are not supposed to result from the interaction loop, else please report the bug. This function is called automatically by the law functor on the first instance of a cohesive interaction. To call it in a script: law.checkConsistency(i.phys,i.id1,i.id2).

property creep_viscosity

creep viscosity [Pa.s/m]. probably should be moved to Ip2_CohFrictMat_CohFrictMat_CohFrictPhys.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

elasticEnergy((Law2_ScGeom6D_CohFrictPhys_CohesionMoment)arg1) float :

Compute total elastic energy.

initPlasticDissipation((Law2_ScGeom6D_CohFrictPhys_CohesionMoment)arg1, (float)arg2) None :

Initialize cummulated plastic dissipation to a value (0 by default).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

normElastEnergy((Law2_ScGeom6D_CohFrictPhys_CohesionMoment)arg1) float :

Compute normal elastic energy.

plasticDissipation((Law2_ScGeom6D_CohFrictPhys_CohesionMoment)arg1) float :

Total energy dissipated in plastic slips at all CohFrictPhys contacts. Computed only if Law2_ScGeom_FrictPhys_CundallStrack::traceEnergy is true.

shearElastEnergy((Law2_ScGeom6D_CohFrictPhys_CohesionMoment)arg1) float :

Compute shear elastic energy.

property shear_creep

activate creep on the shear force, using CohesiveFrictionalContactLaw::creep_viscosity.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property traceEnergy

Define the total energy dissipated in plastic slips at contacts. Note that it will not reflect any energy associated to de-bonding, as it may occur for fragile contacts, nor does it include plastic dissipation in traction.

twistElastEnergy((Law2_ScGeom6D_CohFrictPhys_CohesionMoment)arg1) float :

Compute twist elastic energy.

property twist_creep

activate creep on the twisting moment, using CohesiveFrictionalContactLaw::creep_viscosity.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property useIncrementalForm

use the incremental formulation to compute bending and twisting moments. Creep on the twisting moment is not included in such a case.

class yade.wrapper.Law2_ScGeom6D_InelastCohFrictPhys_CohesionMoment(inherits LawFunctor Functor Serializable)

This law is currently under developpement. Final version and documentation will come before the end of 2014.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

normElastEnergy((Law2_ScGeom6D_InelastCohFrictPhys_CohesionMoment)arg1) float :

Compute normal elastic energy.

shearElastEnergy((Law2_ScGeom6D_InelastCohFrictPhys_CohesionMoment)arg1) float :

Compute shear elastic energy.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_BubblePhys_Bubble(inherits LawFunctor Functor Serializable)

Constitutive law for Bubble model.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property pctMaxForce

Chan[2011] states the contact law is valid only for small interferences; therefore an exponential force-displacement curve models the contact stiffness outside that regime (large penetration). This artificial stiffening ensures that bubbles will not pass through eachother or completely overlap during the simulation. The maximum force is Fmax = (2*pi*surfaceTension*rAvg). pctMaxForce is the percentage of the maximum force dictates the separation threshold, Dmax, for each contact. Penetrations less than Dmax calculate the reaction force from the derived contact law, while penetrations equal to or greater than Dmax calculate the reaction force from the artificial exponential curve.

property surfaceTension

The surface tension in the liquid surrounding the bubbles. The default value is that of water at 25 degrees Celcius.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_CpmPhys_Cpm(inherits LawFunctor Functor Serializable)

Constitutive law for the cpm-model.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

elasticEnergy((Law2_ScGeom_CpmPhys_Cpm)arg1) float :

Compute and return the total elastic energy in all “CpmPhys” contacts

property epsSoft

Strain at which softening in compression starts (non-negative to deactivate). The default value is such that plasticity does not occur

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property omegaThreshold

damage after which the contact disappears (<1), since omega reaches 1 only for strain →+∞

property relKnSoft

Relative rigidity of the softening branch in compression (0=perfect elastic-plastic, <0 softening, >0 hardening)

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property yieldEllipseShift

horizontal scaling of the ellipse (shifts on the +x axis as interactions with +y are given)

property yieldLogSpeed

scaling in the logarithmic yield surface (should be <1 for realistic results; >=0 for meaningful results)

yieldSigmaTMagnitude((Law2_ScGeom_CpmPhys_Cpm)arg1, (float)sigmaN, (float)omega, (float)undamagedCohesion, (float)tanFrictionAngle) float :

Return radius of yield surface for given material and state parameters; uses attributes of the current instance (yieldSurfType etc), change them before calling if you need that.

property yieldSurfType

yield function: 0: mohr-coulomb (original); 1: parabolic; 2: logarithmic, 3: log+lin_tension, 4: elliptic, 5: elliptic+log

class yade.wrapper.Law2_ScGeom_FrictPhys_CundallStrack(inherits LawFunctor Functor Serializable)

Law for linear compression, and Mohr-Coulomb plasticity surface without cohesion. This law implements the classical linear elastic-plastic law from [CundallStrack1979] (see also [Pfc3dManual30]). The normal force is (with the convention of positive tensile forces) \(F_n=\min(k_n u_n, 0)\). The shear force is \(F_s=k_s u_s\), the plasticity condition defines the maximum value of the shear force : \(F_s^{\max}=F_n\tan(\phi)\), with \(\phi\) the friction angle.

This law is well tested in the context of triaxial simulation, and has been used for a number of published results (see e.g. [Scholtes2009b] and other papers from the same authors). It is generalised by Law2_ScGeom6D_CohFrictPhys_CohesionMoment, which adds cohesion and moments at contact.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

elasticEnergy((Law2_ScGeom_FrictPhys_CundallStrack)arg1) float :

Compute and return the total elastic energy in all “FrictPhys” contacts

initPlasticDissipation((Law2_ScGeom_FrictPhys_CundallStrack)arg1, (float)arg2) None :

Initialize cummulated plastic dissipation to a value (0 by default).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

plasticDissipation((Law2_ScGeom_FrictPhys_CundallStrack)arg1) float :

Total energy dissipated in plastic slips at all FrictPhys contacts. Computed only if Law2_ScGeom_FrictPhys_CundallStrack::traceEnergy is true.

property sphericalBodies

If true, compute branch vectors from radii (faster), else use contactPoint-position. Turning this flag true is safe for sphere-sphere contacts and a few other specific cases. It will give wrong values of torques on facets or boxes.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property traceEnergy

Define the total energy dissipated in plastic slips at all contacts. This will trace only plastic energy in this law, see O.trackEnergy for a more complete energies tracing

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_FrictViscoPhys_CundallStrackVisco(inherits LawFunctor Functor Serializable)

Constitutive law for the FrictViscoPM. Corresponds to Law2_ScGeom_FrictPhys_CundallStrack with the only difference that viscous damping in normal direction can be considered.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

elasticEnergy((Law2_ScGeom_FrictViscoPhys_CundallStrackVisco)arg1) float :

Compute and return the total elastic energy in all “FrictViscoPhys” contacts

initPlasticDissipation((Law2_ScGeom_FrictViscoPhys_CundallStrackVisco)arg1, (float)arg2) None :

Initialize cummulated plastic dissipation to a value (0 by default).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

plasticDissipation((Law2_ScGeom_FrictViscoPhys_CundallStrackVisco)arg1) float :

Total energy dissipated in plastic slips at all FrictPhys contacts. Computed only if :yref:Law2_ScGeom_FrictViscoPhys_CundallStrackVisco::traceEnergy` is true.

property sphericalBodies

If true, compute branch vectors from radii (faster), else use contactPoint-position. Turning this flag true is safe for sphere-sphere contacts and a few other specific cases. It will give wrong values of torques on facets or boxes.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property traceEnergy

Define the total energy dissipated in plastic slips at all contacts. This will trace only plastic energy in this law, see O.trackEnergy for a more complete energies tracing

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_ImplicitLubricationPhys(inherits Law2_ScGeom_VirtualLubricationPhys LawFunctor Functor Serializable)

Material law for lubrication and contact between two spheres, solved using implicit method. The full description of this contact law is available in [Chevremont2020] . Several resolution methods are available. Iterative exact, solving the 2nd order polynomia. Other resolutions methods are numerical (Newton-Rafson and Dichotomy) with a variable change \(\delta=\log(u)\), solved in dimentionless coordinates.

property MaxDist

Maximum distance (d/a) for the interaction

property MaxIter

Maximum iterations for numerical resolution (Dichotomy and Newton-Rafson)

property SolutionTol

Tolerance for numerical resolution (Dichotomy and Newton-Rafson)

property activateRollLubrication

Activate roll lubrication (default: true)

property activateTangencialLubrication

Activate tangencial lubrication (default: true)

property activateTwistLubrication

Activate twist lubrication (default: true)

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

static getStressForEachBody() tuple :

Get stresses tensors for each bodies: normal contact stress, shear contact stress, normal lubrication stress, shear lubrication stress, stress from additionnal potential forces.

static getTotalStresses() tuple :

Get total stresses tensors: normal contact stress, shear contact stress, normal lubrication stress, shear lubrication stress, stress from additionnal potential forces.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property maxSubSteps

max recursion depth of adaptative timestepping in the theta-method, the minimal time interval is thus Omega::dt\(/2^{depth}\). If still not converged the integrator will switch to backward Euler.

property resolution

Change normal component resolution method, 0: Iterative exact resolution with substepping (theta method, linear contact), 1: Newton-Rafson dimensionless resolution (theta method, linear contact), 2: (default) Dichotomy dimensionless resolution (theta method, linear contact), 3: Exact dimensionless solution with contact prediction (theta method, linear contact). Method 3 is better if the volumic fraction is not too high. Use 2 otherwise.

property theta

parameter of the ‘theta’-method, 1: backward Euler, 0.5: trapezoidal rule, 0: not used, 0.55: suggested optimum)

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(inherits LawFunctor Functor Serializable)

Interaction law for cohesive frictional material, e.g. rock, possibly presenting joint surfaces, that can be mechanically described with a smooth contact logic [Ivars2011] (implemented in Yade in [Scholtes2012]). See examples/jointedCohesiveFrictionalPM for script examples. Joint surface definitions (through stl meshes or direct definition with gts module) are illustrated there.

property Key

string specifying the name of saved file ‘cracks___.txt’, when recordCracks is true.

property bases

Ordered list of types (as strings) this functor accepts.

property clusterMoments

computer clustered moments? (on by default

property computedCentroid

computer clustered moments?

property cracksFileExist

if true (and if recordCracks), data are appended to an existing ‘cracksKey’ text file; otherwise its content is reset.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property eventNumber

cluster event number (used for clustering and paraview visualization of groups).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property momentFudgeFactor

Fudge factor used by Hazzard and Damjanac 2013 to improve moment size accuracy (set to 1 for no impact by default)

property momentRadiusFactor

Average particle diameter multiplier for moment magnitude calculation

property momentsFileExist

if true (and if recordCracks), data are appended to an existing ‘momentsKey’ text file; otherwise its content is reset.

property nbShearCracks

number of shear microcracks.

property nbTensCracks

number of tensile microcracks.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene

property recordCracks

if true, data about interactions that lose their cohesive feature are stored in the text file cracksKey.txt (see Key and cracksFileExist). It contains 9 columns: the break iteration, the 3 coordinates of the contact point, the type (1 means shear break, while 0 corresponds to tensile break), the ‘’cross section’’ (mean radius of the 2 spheres) and the 3 coordinates of the contact normal.

property recordMoments

Combines with :yref: Key<Law2ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM.Key> to compute acoustic emissions according to clustered broken bond method? (off by default)

property smoothJoint

if true, interactions of particles belonging to joint surface (JCFpmPhys.isOnJoint) are handled according to a smooth contact logic [Ivars2011], [Scholtes2012].

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property totalCracksSurface

calculate the total cracked surface.

property totalShearCracksE

calculate the overall energy dissipated by interparticle microcracking in shear.

property totalTensCracksE

calculate the overall energy dissipated by interparticle microcracking in tension.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property useStrainEnergy

use strain energy for moment magnitude estimation (if false, use kinetic energy)

class yade.wrapper.Law2_ScGeom_LudingPhys_Basic(inherits LawFunctor Functor Serializable)

Linear viscoelastic model operating on ScGeom and LudingPhys. See [Luding2008] ,[Singh2013]_ for more details.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_MindlinPhysCDM_HertzMindlinCDM(inherits LawFunctor Functor Serializable)

Hertz-Mindlin model extended: Normal direction: conical damage model from Harkness et al. 2016./ Suhr & Six 2017. Tangential direction: stress dependent interparticle friction coefficient, Suhr & Six 2016. Both models can be switched on/off separately. In this version there is NO damping (neither viscous nor linear), NO adhesion and NO calc_energy, NO includeMoment, NO preventGranularRatcheting. NOT tested for periodic simulations.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

ratioSlidingContacts((Law2_ScGeom_MindlinPhysCDM_HertzMindlinCDM)arg1) float :

Return the ratio between the number of contacts sliding to the total number at a given time.

ratioYieldingContacts((Law2_ScGeom_MindlinPhysCDM_HertzMindlinCDM)arg1) float :

Return the ratio between the number of contacts yielding to the total number at a given time.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_MindlinPhys_HertzWithLinearShear(inherits LawFunctor Functor Serializable)

Constitutive law for the Hertz formulation (using MindlinPhys.kno) and linear behavior in shear (using MindlinPhys.kso for stiffness and FrictPhys.tangensOfFrictionAngle).

Note

No viscosity or damping. If you need those, look at Law2_ScGeom_MindlinPhys_Mindlin, which also includes non-linear Mindlin shear.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

property nonLin

Shear force nonlinearity (the value determines how many features of the non-linearity are taken in account). 1: ks as in HM 2: shearElastic increment computed as in HM 3. granular ratcheting disabled.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_MindlinPhys_Mindlin(inherits LawFunctor Functor Serializable)

Constitutive law for the Hertz-Mindlin formulation. It includes non linear elasticity in the normal direction as predicted by Hertz for two non-conforming elastic contact bodies. In the shear direction, instead, it reseambles the simplified case without slip discussed in Mindlin’s paper, where a linear relationship between shear force and tangential displacement is provided. Finally, the Mohr-Coulomb criterion is employed to established the maximum friction force which can be developed at the contact. Moreover, it is also possible to include the effect of linear viscous damping through the definition of the parameters \(\beta_{n}\) and \(\beta_{s}\).

property bases

Ordered list of types (as strings) this functor accepts.

property calcEnergy

bool to calculate energy terms (shear potential energy, dissipation of energy due to friction and dissipation of energy due to normal and tangential damping)

contactsAdhesive((Law2_ScGeom_MindlinPhys_Mindlin)arg1) float :

Compute total number of adhesive contacts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property frictionDissipation

Energy dissipation due to sliding

property includeAdhesion

bool to include the adhesion force following the DMT formulation. If true, also the normal elastic energy takes into account the adhesion effect.

property includeMoment

bool to consider rolling resistance (if Ip2_FrictMat_FrictMat_MindlinPhys::eta is 0.0, no plastic condition is applied.)

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

property normDampDissip

Energy dissipated by normal damping

normElastEnergy((Law2_ScGeom_MindlinPhys_Mindlin)arg1) float :

Compute normal elastic potential energy. It handles the DMT formulation if Law2_ScGeom_MindlinPhys_Mindlin::includeAdhesion is set to true.

property nothing

dummy attribute for declaring preventGranularRatcheting deprecated

ratioSlidingContacts((Law2_ScGeom_MindlinPhys_Mindlin)arg1) float :

Return the ratio between the number of contacts sliding to the total number at a given time.

property shearDampDissip

Energy dissipated by tangential damping

property shearEnergy

Shear elastic potential energy

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_MindlinPhys_MindlinDeresiewitz(inherits LawFunctor Functor Serializable)

Hertz-Mindlin contact law with partial slip solution, as described in [Thornton1991].

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_MortarPhys_Lourenco(inherits LawFunctor Functor Serializable)

Material law for mortar layer according to [Lourenco1994]. The contact behaves elastic until brittle failure when reaching strength envelope. The envelope has three parts.

Tensile with condition \(\sigma_N-f_t\).

Shear part with Mohr-Coulomb condition \(|\sigma_T|+\sigma_N\tan\varphi-c\).

Compressive part with condition \(\sigma_N^2+A^2\sigma_T^2-f_c^2\)

The main idea is to begin simulation with this model and when the contact is broken, to use standard non-cohesive Law2_PolyhedraGeom_PolyhedraPhys_Volumetric.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_PotentialLubricationPhys(inherits Law2_ScGeom_ImplicitLubricationPhys Law2_ScGeom_VirtualLubricationPhys LawFunctor Functor Serializable)

Material law for lubrication + potential between two spheres. The potential model include contact. This material law will solve the system with lubrication and the provided potential.

property MaxDist

Maximum distance (d/a) for the interaction

property MaxIter

Maximum iterations for numerical resolution (Dichotomy and Newton-Rafson)

property SolutionTol

Tolerance for numerical resolution (Dichotomy and Newton-Rafson)

property activateRollLubrication

Activate roll lubrication (default: true)

property activateTangencialLubrication

Activate tangencial lubrication (default: true)

property activateTwistLubrication

Activate twist lubrication (default: true)

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

static getStressForEachBody() tuple :

Get stresses tensors for each bodies: normal contact stress, shear contact stress, normal lubrication stress, shear lubrication stress, stress from additionnal potential forces.

static getTotalStresses() tuple :

Get total stresses tensors: normal contact stress, shear contact stress, normal lubrication stress, shear lubrication stress, stress from additionnal potential forces.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property maxSubSteps

max recursion depth of adaptative timestepping in the theta-method, the minimal time interval is thus Omega::dt\(/2^{depth}\). If still not converged the integrator will switch to backward Euler.

property potential

Physical potential force between spheres.

property resolution

Change normal component resolution method, 0: Iterative exact resolution with substepping (theta method, linear contact), 1: Newton-Rafson dimensionless resolution (theta method, linear contact), 2: (default) Dichotomy dimensionless resolution (theta method, linear contact), 3: Exact dimensionless solution with contact prediction (theta method, linear contact). Method 3 is better if the volumic fraction is not too high. Use 2 otherwise.

property theta

parameter of the ‘theta’-method, 1: backward Euler, 0.5: trapezoidal rule, 0: not used, 0.55: suggested optimum)

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_VirtualLubricationPhys(inherits LawFunctor Functor Serializable)

Virtual class for sheared lubrication functions. This don’t do any computation and shouldn’t be used directly!

property MaxDist

Maximum distance (d/a) for the interaction

property activateRollLubrication

Activate roll lubrication (default: true)

property activateTangencialLubrication

Activate tangencial lubrication (default: true)

property activateTwistLubrication

Activate twist lubrication (default: true)

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

static getStressForEachBody() tuple :

Get stresses tensors for each bodies: normal contact stress, shear contact stress, normal lubrication stress, shear lubrication stress, stress from additionnal potential forces.

static getTotalStresses() tuple :

Get total stresses tensors: normal contact stress, shear contact stress, normal lubrication stress, shear lubrication stress, stress from additionnal potential forces.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_ViscElCapPhys_Basic(inherits LawFunctor Functor Serializable)

Extended version of Linear viscoelastic model with capillary parameters.

property NLiqBridg

The total number of liquid bridges

property VLiqBridg

The total volume of liquid bridges

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_ViscElPhys_Basic(inherits LawFunctor Functor Serializable)

Linear viscoelastic model operating on ScGeom and ViscElPhys. The contact law is visco-elastic in the normal direction, and visco-elastic frictional in the tangential direction. The normal contact is modelled as a spring of equivalent stiffness \(k_n\), placed in parallel with a viscous damper of equivalent viscosity \(c_n\). As for the tangential contact, it is made of a spring-dashpot system (in parallel with equivalent stiffness \(k_s\) and viscosity \(c_s\)) in serie with a slider of friction coefficient \(\mu = \tan \phi\).

The friction coefficient \(\mu = \tan \phi\) is always evaluated as \(\tan(\min(\phi_1,\phi_2))\), where \(\phi_1\) and \(\phi_2\) are respectively the friction angle of particle 1 and 2. For the other parameters, depending on the material input, the equivalent parameters of the contact (\(K_n\),\(C_n\),\(K_s\),\(C_s\),\(\phi\)) are evaluated differently. In the following, the quantities in parenthesis are the material constant which are precised for each particle. They are then associated to particle 1 and 2 (e.g. \(kn_1\),\(kn_2\),\(cn_1\)…), and should not be confused with the equivalent parameters of the contact (\(K_n\),\(C_n\),\(K_s\),\(C_s\),\(\phi\)).

  • If contact time (tc), normal and tangential restitution coefficient (en,et) are precised, the equivalent parameters are evaluated following the formulation of Pournin [Pournin2001].

  • If normal and tangential stiffnesses (kn, ks) and damping constant (cn,cs) of each particle are precised, the equivalent stiffnesses and damping constants of each contact made of two particles 1 and 2 is made \(A = 2\frac{a_1 a_2}{a_1 + a_2}\), where A is \(K_n\), \(K_s\), \(C_n\) and \(C_s\), and 1 and 2 refer to the value associated to particle 1 and 2.

  • Alternatively it is possible to precise the Young’s modulus (young) and Poisson’s ratio (poisson) instead of the normal and spring constant (kn and ks). In this case, the equivalent parameters are evaluated the same way as the previous case with \(kn_x = E_x d_x\), \(ks_x = v_x kn_x\), where \(E_x\), \(v_x\) and \(d_x\) are Young’s modulus, Poisson’s ratio and diameter of particle x.

  • If Young’s modulus (young), Poisson’s ratio (poisson), normal and tangential restitution coefficient (en,et) are precised, the equivalent stiffnesses are evaluated as previously: \(K_n = 2\frac{kn_1 kn_2}{kn_1 + kn_2}\), \(kn_x = E_x d_x\), \(K_s = 2(ks_1 ks_2)/(ks_1 + ks_2)\), \(ks_x = v kn_x\). The damping constant is computed at each contact in order to fulfill the normal restitution coefficient \(e_n = (en_1 + en_2)/2\). This is achieved resolving numerically equation 21 of [Schwager2007] (There is in fact a mistake in the article from equation 18 to 19, so that there is a change in sign). Be careful in this configuration the tangential restitution coefficient is set to 1 (no tangential damping). This formulation imposes directly the normal restitution coefficient of the collisions instead of the damping constant.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGeom_ViscoFrictPhys_CundallStrack(inherits Law2_ScGeom_FrictPhys_CundallStrack LawFunctor Functor Serializable)

Law similar to Law2_ScGeom_FrictPhys_CundallStrack with the addition of shear creep at contacts.

property bases

Ordered list of types (as strings) this functor accepts.

property creepStiffness

dict((Serializable)arg1) dict :

Return dictionary of attributes.

elasticEnergy((Law2_ScGeom_FrictPhys_CundallStrack)arg1) float :

Compute and return the total elastic energy in all “FrictPhys” contacts

initPlasticDissipation((Law2_ScGeom_FrictPhys_CundallStrack)arg1, (float)arg2) None :

Initialize cummulated plastic dissipation to a value (0 by default).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

plasticDissipation((Law2_ScGeom_FrictPhys_CundallStrack)arg1) float :

Total energy dissipated in plastic slips at all FrictPhys contacts. Computed only if Law2_ScGeom_FrictPhys_CundallStrack::traceEnergy is true.

property shearCreep

property sphericalBodies

If true, compute branch vectors from radii (faster), else use contactPoint-position. Turning this flag true is safe for sphere-sphere contacts and a few other specific cases. It will give wrong values of torques on facets or boxes.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property traceEnergy

Define the total energy dissipated in plastic slips at all contacts. This will trace only plastic energy in this law, see O.trackEnergy for a more complete energies tracing

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property viscosity

class yade.wrapper.Law2_ScGeom_WirePhys_WirePM(inherits LawFunctor Functor Serializable)

Constitutive law for the wire model.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property linkThresholdIteration

Iteration to create the link.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGridCoGeom_CohFrictPhys_CundallStrack(inherits LawFunctor Functor Serializable)

Law between a cohesive frictional GridConnection and a cohesive frictional Sphere. Almost the same than Law2_ScGeom6D_CohFrictPhys_CohesionMoment, but THE ROTATIONAL MOMENTS ARE NOT COMPUTED.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_ScGridCoGeom_FrictPhys_CundallStrack(inherits LawFunctor Functor Serializable)

Law between a frictional GridConnection and a frictional Sphere. Almost the same than Law2_ScGeom_FrictPhys_CundallStrack, but the force is divided and applied on the two GridNodes only.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only in case another constitutive law is in the scene, e.g. Law2_ScGeom_CapillaryPhys_Capillarity)

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_TTetraSimpleGeom_NormPhys_Simple(inherits LawFunctor Functor Serializable)

EXPERIMENTAL. TODO

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Law2_VolumeGeom_FrictPhys_Elastic(inherits LawFunctor Functor Serializable)

Contact law for elasticity, scaling exponentially with the overlap volume, with Mohr-Coulomb plastic failure without cohesion. This law implements a volumetric variant of the classical elastic-plastic law from [CundallStrack1979] (see also [Pfc3dManual30]). The normal force is \(F_n=\min(k_n V_{overlap}^a, 0)\) with \(a=1\) (linear) as the default and the convention of positive tensile forces. The shear force is \(F_s=k_s u_s\), the plasticity condition defines the maximum value of the shear force: \(F_s^{\max}=F_n\tan(\phi)\), with \(\phi\) the friction angle.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

initPlasticDissipation((Law2_VolumeGeom_FrictPhys_Elastic)arg1, (float)arg2) None :

Initialize cummulated plastic dissipation to a value (0 by default).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only useful if another contact law is used as well).

plasticDissipation((Law2_VolumeGeom_FrictPhys_Elastic)arg1) float :

Total energy dissipated in plastic slips at all FrictPhys contacts. Computed only if Law2_VolumeGeom_FrictPhys_Elastic::traceEnergy is true.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property traceEnergy

Define the total energy dissipated in plastic slips at all contacts. This will trace only plastic energy in this law, see O.trackEnergy for a more complete energies tracing.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property volumePower

The exponent \(a\) on the overlap volume within the contact law. Setting to 0.5 gives a near-linear relationship of force with respect to penetration distance for spheres.

class yade.wrapper.Law2_VolumeGeom_ViscoFrictPhys_Elastic(inherits Law2_VolumeGeom_FrictPhys_Elastic LawFunctor Functor Serializable)

Law similar to Law2_VolumeGeom_FrictPhys_Elastic with the addition of shear creep at contacts.

property bases

Ordered list of types (as strings) this functor accepts.

property creepStiffness

dict((Serializable)arg1) dict :

Return dictionary of attributes.

initPlasticDissipation((Law2_VolumeGeom_FrictPhys_Elastic)arg1, (float)arg2) None :

Initialize cummulated plastic dissipation to a value (0 by default).

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property neverErase

Keep interactions even if particles go away from each other (only useful if another contact law is used as well).

plasticDissipation((Law2_VolumeGeom_FrictPhys_Elastic)arg1) float :

Total energy dissipated in plastic slips at all FrictPhys contacts. Computed only if Law2_VolumeGeom_FrictPhys_Elastic::traceEnergy is true.

property shearCreep

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

property traceEnergy

Define the total energy dissipated in plastic slips at all contacts. This will trace only plastic energy in this law, see O.trackEnergy for a more complete energies tracing.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property viscosity

property volumePower

The exponent \(a\) on the overlap volume within the contact law. Setting to 0.5 gives a near-linear relationship of force with respect to penetration distance for spheres.

LawDispatcher

class yade.wrapper.LawDispatcher(inherits Dispatcher Engine Serializable)

Dispatcher calling functors based on received argument type(s).

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispFunctor((LawDispatcher)arg1, (IGeom)arg2, (IPhys)arg3) LawFunctor :

Return functor that would be dispatched for given argument(s); None if no dispatch; ambiguous dispatch throws.

dispMatrix((LawDispatcher)arg1[, (bool)names=True]) dict :

Return dictionary with contents of the dispatch matrix.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property functors

Functors associated with this dispatcher.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

Internal forces

InternalForceFunctor

digraph InternalForceFunctor {
        rankdir=RL;
        margin="0.2,0.05";
        "InternalForceFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.InternalForceFunctor"];
        "If2_2xLin4NodeTetra_LinCohesiveStiffPropDampElastMat" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.If2_2xLin4NodeTetra_LinCohesiveStiffPropDampElastMat"];
        "If2_2xLin4NodeTetra_LinCohesiveStiffPropDampElastMat" -> "InternalForceFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "If2_Lin4NodeTetra_LinIsoRayleighDampElast" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.If2_Lin4NodeTetra_LinIsoRayleighDampElast"];
        "If2_Lin4NodeTetra_LinIsoRayleighDampElast" -> "InternalForceFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of InternalForceFunctor.

class yade.wrapper.InternalForceFunctor(inherits Functor Serializable)

Functor for creating/updating Body::bound.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.If2_2xLin4NodeTetra_LinCohesiveStiffPropDampElastMat(inherits InternalForceFunctor Functor Serializable)

Apply internal forces of the tetrahedral element using lumped mass theory

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.If2_Lin4NodeTetra_LinIsoRayleighDampElast(inherits InternalForceFunctor Functor Serializable)

Apply internal forces of the tetrahedral element using lumped mass theory

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

InternalForceDispatcher

class yade.wrapper.InternalForceDispatcher(inherits Dispatcher Engine Serializable)

Dispatcher calling functors based on received argument type(s).

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dispFunctor((InternalForceDispatcher)arg1, (Shape)arg2, (Material)arg3) InternalForceFunctor :

Return functor that would be dispatched for given argument(s); None if no dispatch; ambiguous dispatch throws.

dispMatrix((InternalForceDispatcher)arg1[, (bool)names=True]) dict :

Return dictionary with contents of the dispatch matrix.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property functors

Functors associated with this dispatcher.

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

Callbacks

digraph IntrCallback {
        rankdir=RL;
        margin="0.2,0.05";
        "IntrCallback" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.IntrCallback"];
        "SumIntrForcesCb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.SumIntrForcesCb"];
        "SumIntrForcesCb" -> "IntrCallback" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of IntrCallback.

class yade.wrapper.IntrCallback(inherits Serializable)

Abstract callback object which will be called for every (real) Interaction after the interaction has been processed by InteractionLoop.

At the beginning of the interaction loop, stepInit is called, initializing the object; it returns either NULL (to deactivate the callback during this time step) or pointer to function, which will then be passed (1) pointer to the callback object itself and (2) pointer to Interaction.

Note

(NOT YET DONE) This functionality is accessible from python by passing 4th argument to InteractionLoop constructor, or by appending the callback object to InteractionLoop::callbacks.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.SumIntrForcesCb(inherits IntrCallback Serializable)

Callback summing magnitudes of forces over all interactions. IPhys of interactions must derive from NormShearPhys (responsability fo the user).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

Preprocessors

digraph FileGenerator {
        rankdir=RL;
        margin="0.2,0.05";
        "FileGenerator" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.FileGenerator"];
        "BlockGen" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.BlockGen"];
        "BlockGen" -> "FileGenerator" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "SimpleShear" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.SimpleShear"];
        "SimpleShear" -> "FileGenerator" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "TriaxialTest" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.TriaxialTest"];
        "TriaxialTest" -> "FileGenerator" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of FileGenerator.

class yade.wrapper.FileGenerator(inherits Serializable)

Base class for scene generators, preprocessors.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

generate((FileGenerator)arg1, (str)out) None :

Generate scene, save to given file

load((FileGenerator)arg1) None :

Generate scene, save to temporary file and load immediately

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.BlockGen(inherits FileGenerator Serializable)

Prepare a scene for Block Generation using the Potential Blocks.

property Kn

Volumetric contact normal stiffness

property Ks

Volumetric contact shear stiffness

property RForPP

R in Potential Particles

property Talesnick

Whether to choose the Talesnick contact law, used for validating code previously against model test

property boundaries

Whether to check for filename boundaries

property boundarySizeXmax

Max X of domain

property boundarySizeXmin

Min X of domain

property boundarySizeYmax

Max Y of domain

property boundarySizeYmin

Min Y of domain

property boundarySizeZmax

Max Z of domain

property boundarySizeZmin

Min Z of domain

property calContactArea

Whether to calculate jointLength for 2-D contacts and contactArea for 2-D and 3-D contacts

property color

color of generated blocks (random color will be assigned to each sub-block if a color is not specified)

property dampingMomentum

Coefficient of global damping

property defaultDt

Max time-step. Used as initial value if defined. Later adjusted by the time stepper

property density

Density of blocks

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property directionA

Local x-direction to check minSize

property directionB

Local y-direction to check minSize

property directionC

Local z-direction to check minSize

property exactRotation

Whether to handle the rotational motion of aspherical bodies more accurately

property filenameBoundaries

filename to look for joint with probabilistic models

property filenameOpening

filename to look for joint outline of joints

property filenamePersistentPlanes

filename to look for joint properties

property filenameProbabilistic

filename to look for joint with probabilistic models

property filenameSliceBoundaries

filename to look for joint outline of joints

property filenameSlopeFace

filename to look for joint outline of joints

property frictionDeg

Friction angle [°]

generate((FileGenerator)arg1, (str)out) None :

Generate scene, save to given file

property globalOrigin

Global origin (reference point) for the discontinuities to be imposed

property gravity

Gravity

property inertiaFactor

Scaling of inertia

property initialOverlap

Initial overlap between blocks

property intactRockDegradation

Whether to activate degradation of parameters for contact

property jointProbabilistic

Whether to check for filename jointProbabilistic

property joint_a

Introduce discontinuities from Python: List of a coefficients of plane normals

property joint_b

Introduce discontinuities from Python: List of b coefficients of plane normals

property joint_c

Introduce discontinuities from Python: List of c coefficients of plane normals

property joint_d

Introduce discontinuities from Python: List of d coefficients of plane equations

property kForPP

k in Potential Particles

load((FileGenerator)arg1) None :

Generate scene, save to temporary file and load immediately

property maxRatio

Minimum ratio for all blocks

property minSize

Minimum size for all blocks

property neverErase

Whether to erase non interacting contacts

property opening

Whether to check for filename opening

property outputFile

Filename where the data of the block generation are saved. Leave blank if an output file is not needed

property persistentPlanes

Whether to check persistence

property probabilisticOrientation

Whether to generate rock joints randomly

property rForPP

r in Potential Particles

property saveBlockGenData

Whether to write the data of the block generation in a text file (if true) or display on the terminal (if false)

property shrinkFactor

Ratio to shrink r

property sliceBoundaries

Whether to check for filename sliceBoundaries

property slopeFace

Whether to check for filename slopeFace

property timeStepUpdateInterval

Interval for GlobalStiffnessTimeStepper

property traceEnergy

Whether to calculate energy terms (elastic potential energy (normal and shear), plastic dissipation due to friction and dissipation of energy (normal and tangential) due to viscous damping)

property twoDimension

Whether the model is 2D

property unitWidth2D

Unit width in 2D (out of plane distance)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property useFaceProperties

Whether to use face properties

property useGlobalStiffnessTimeStepper

Whether to use GlobalStiffnessTimeStepper

property viscousDamping

Viscous damping

class yade.wrapper.SimpleShear(inherits FileGenerator Serializable)

Preprocessor for a simple shear box model. The packing initially conforms a gas-like, very loose, state (see utils.makeCloud function), but importing some existing packing from a text file can be also performed after little change in the source code. In its current state, the preprocessor carries out an oedometric compression, until a value of normal stress equal to 2 MPa (and a stable mechanical state). Others Engines such as KinemCNDEngine, KinemCNSEngine and KinemCNLEngine, could be used to apply resp. constant normal displacement, constant normal rigidity and constant normal stress paths using such a simple shear box.

property density

density of the spheres [\(kg/m^3\)]

dict((Serializable)arg1) dict :

Return dictionary of attributes.

generate((FileGenerator)arg1, (str)out) None :

Generate scene, save to given file

property gravApplied

depending on this, GravityEngine is added or not to the scene to take into account the weight of particles

property gravity

vector corresponding to used gravity (if gravApplied) [\(m/s^2\)]

property height

initial height (along y-axis) of the shear box [\(m\)]

property length

initial length (along x-axis) of the shear box [\(m\)]

load((FileGenerator)arg1) None :

Generate scene, save to temporary file and load immediately

property matFrictionDeg

value of FrictMat.frictionAngle within the packing and for the two horizontal boundaries (friction is zero along other boundaries) [\(^\circ\)] (the necessary conversion in [\(rad\)] is done automatically)

property matPoissonRatio

value of FrictMat.poisson for the bodies [-]

property matYoungModulus

value of FrictMat.young for the bodies [\(Pa\)]

property thickness

thickness of the boxes constituting the shear box [\(m\)]

property timeStepUpdateInterval

value of TimeStepper::timeStepUpdateInterval for the TimeStepper used here

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property width

initial width (along z-axis) of the shear box [\(m\)]

class yade.wrapper.TriaxialTest(inherits FileGenerator Serializable)

Create a scene for triaxal test.

Introduction

Yade includes tools to simulate triaxial tests on particles assemblies. This pre-processor (and variants like e.g. CapillaryTriaxialTest) illustrate how to use them. It generates a scene which will - by default - go through the following steps :

  • generate random loose packings in a parallelepiped.

  • compress the packing isotropicaly, either squeezing the packing between moving rigid boxes or expanding the particles while boxes are fixed (depending on flag internalCompaction). The confining pressure in this stage is defined via sigmaIsoCompaction.

  • when the packing is dense and stable, simulate a loading path and get the mechanical response as a result.

The default loading path corresponds to a constant lateral stress (sigmaLateralConfinement) in 2 directions and constant strain rate on the third direction. This default loading path is performed when the flag autoCompressionActivation it True, otherwise the simulation stops after isotropic compression.

Different loading paths might be performed. In order to define them, the user can modify the flags found in engine TriaxialStressController at any point in the simulation (in c++). If TriaxialStressController.wall_X_activated is true boundary X is moved automatically to maintain the defined stress level sigmaN (see axis conventions below). If false the boundary is not controlled by the engine at all. In that case the user is free to prescribe fixed position, constant velocity, or more complex conditions.

Note

Axis conventions. Boundaries perpendicular to the x axis are called “left” and “right”, y corresponds to “top” and “bottom”, and axis z to “front” and “back”. In the default loading path, strain rate is assigned along y, and constant stresses are assigned on x and z.

Essential engines
  1. The TriaxialCompressionEngine is used for controlling the state of the sample and simulating loading paths. TriaxialCompressionEngine inherits from TriaxialStressController, which computes stress- and strain-like quantities in the packing and maintain a constant level of stress at each boundary. TriaxialCompressionEngine has few more members in order to impose constant strain rate and control the transition between isotropic compression and triaxial test. Transitions are defined by changing some flags of the TriaxialStressController, switching from/to imposed strain rate to/from imposed stress.

  2. The class TriaxialStateRecorder is used to write to a file the history of stresses and strains.

  3. TriaxialTest is using GlobalStiffnessTimeStepper to compute an appropriate \(\Dt\) for the numerical scheme.

Note

TriaxialStressController::ComputeUnbalancedForce returns a value that can be useful for evaluating the stability of the packing. It is defined as (mean force on particles)/(mean contact force), so that it tends to 0 in a stable packing. This parameter is checked by TriaxialCompressionEngine to switch from one stage of the simulation to the next one (e.g. stop isotropic confinment and start axial loading)

Frequently Asked Questions

  1. How is generated the packing? How to change particles sizes distribution? Why do I have a message “Exceeded 3000 tries to insert non-overlapping sphere?

    The initial positioning of spheres is done by generating random (x,y,z) in a box and checking if a sphere of radius R (R also randomly generated with respect to a uniform distribution between mean*(1-std_dev) and mean*(1+std_dev) can be inserted at this location without overlaping with others.

    If the sphere overlaps, new (x,y,z)’s are generated until a free position for the new sphere is found. This explains the message you have: after 3000 trial-and-error, the sphere couldn’t be placed, and the algorithm stops.

    You get the message above if you try to generate an initialy dense packing, which is not possible with this algorithm. It can only generate clouds. You should keep the default value of porosity (n~0.7), or even increase if it is still to low in some cases. The dense state will be obtained in the second step (compaction, see below).

  2. How is the compaction done, what are the parameters maxWallVelocity and finalMaxMultiplier?
    Compaction is done
    1. by moving rigid boxes or

    2. by increasing the sizes of the particles (decided using the option internalCompaction ⇒ size increase).

    Both algorithm needs numerical parameters to prevent instabilities. For instance, with the method (1) maxWallVelocity is the maximum wall velocity, with method (2) finalMaxMultiplier is the max value of the multiplier applied on sizes at each iteration (always something like 1.00001).

  3. During the simulation of triaxial compression test, the wall in one direction moves with an increment of strain while the stresses in other two directions are adjusted to sigma_iso. How the stresses in other directions are maintained constant to sigma_iso? What is the mechanism? Where is it implemented in Yade?

    The control of stress on a boundary is based on the total stiffness K of all contacts between the packing and this boundary. In short, at each step, displacement=stress_error/K. This algorithm is implemented in TriaxialStressController, and the control itself is in TriaxialStressController::ControlExternalStress. The control can be turned off independently for each boundary, using the flags wall_XXX_activated, with XXX∈{top, bottom, left, right, back, front}. The imposed sress is a unique value (sigma_iso) for all directions if TriaxialStressController.isAxisymetric, or 3 independent values sigma1, sigma2, sigma3.

  4. Which value of friction angle do you use during the compaction phase of the Triaxial Test?

    The friction during the compaction (whether you are using the expansion method or the compression one for the specimen generation) can be anything between 0 and the final value used during the Triaxial phase. Note that higher friction than the final one would result in volumetric collapse at the beginning of the test. The purpose of using a different value of friction during this phase is related to the fact that the final porosity you get at the end of the sample generation essentially depends on it as well as on the assumed Particle Size Distribution. Changing the initial value of friction will get to a different value of the final porosity.

  5. Which is the aim of the bool isRadiusControlIteration?

    This internal variable (updated automatically) is true each N timesteps (with N=radiusControlInterval). For other timesteps, there is no expansion. Cycling without expanding is just a way to speed up the simulation, based on the idea that 1% increase each 10 iterations needs less operations than 0.1% at each iteration, but will give similar results.

  6. How comes the unbalanced force reaches a low value only after many timesteps in the compaction phase?

    The value of unbalanced force (dimensionless) is expected to reach low value (i.e. identifying a static-equilibrium condition for the specimen) only at the end of the compaction phase. The code is not aiming at simulating a quasistatic isotropic compaction process, it is only giving a stable packing at the end of it.

property Key

A code that is added to output filenames.

property StabilityCriterion

Value of unbalanced force for which the system is considered stable. Used in conditionals to switch between loading stages.

property WallStressRecordFile

property autoCompressionActivation

Do we just want to generate a stable packing under isotropic pressure (false) or do we want the triaxial loading to start automatically right after compaction stage (true)?

property autoStopSimulation

freeze the simulation when conditions are reached (don’t activate this if you want to be able to run/stop from Qt GUI)

property autoUnload

auto adjust the isotropic stress state from TriaxialTest::sigmaIsoCompaction to TriaxialTest::sigmaLateralConfinement if they have different values. See docs for TriaxialCompressionEngine::autoUnload

property boxFrictionDeg

Friction angle [°] of boundaries contacts.

property boxKsDivKn

Ratio of shear vs. normal contact stiffness for boxes.

property boxYoungModulus

Stiffness of boxes.

property compactionFrictionDeg

Friction angle [°] of spheres during compaction (different values result in different porosities)]. This value is overridden by TriaxialTest::sphereFrictionDeg before triaxial testing.

property dampingForce

Coefficient of Cundal-Non-Viscous damping (applied on on the 3 components of forces)

property dampingMomentum

Coefficient of Cundal-Non-Viscous damping (applied on on the 3 components of torques)

property defaultDt

Max time-step. Used as initial value if defined. Latter adjusted by the time stepper.

property density

density of spheres

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property facetWalls

Use facets for boundaries (not tested)

property finalMaxMultiplier

max multiplier of diameters during internal compaction (secondary precise adjustment)

property fixedBoxDims

string that contains some subset (max. 2) of {‘x’,’y’,’z’} ; contains axes will have box dimension hardcoded, even if box is scaled as mean_radius is prescribed: scaling will be applied on the rest.

generate((FileGenerator)arg1, (str)out) None :

Generate scene, save to given file

property importFilename

File with positions and sizes of spheres.

property internalCompaction

flag for choosing between moving boundaries or increasing particles sizes during the compaction stage.

load((FileGenerator)arg1) None :

Generate scene, save to temporary file and load immediately

property lowerCorner

Lower corner of the box.

property maxMultiplier

max multiplier of diameters during internal compaction (initial fast increase)

property maxWallVelocity

max velocity of boundaries. Usually useless, but can help stabilizing the system in some cases.

property noFiles

Do not create any files during run (.xml, .spheres, wall stress records)

property numberOfGrains

Number of generated spheres.

property radiusControlInterval

interval between size changes when growing spheres.

property radiusMean

Mean radius. If negative (default), autocomputed to as a function of box size and TriaxialTest::numberOfGrains

property radiusStdDev

Normalized standard deviation of generated sizes.

property recordIntervalIter

interval between file outputs

property seed

Seed used for the call to makeCloud

property sigmaIsoCompaction

Confining stress during isotropic compaction (< 0 for real - compressive - compaction).

property sigmaLateralConfinement

Lateral stress during triaxial loading (< 0 for classical compressive cases). An isotropic unloading is performed if the value is not equal to TriaxialTest::sigmaIsoCompaction.

property sphereFrictionDeg

Friction angle [°] of spheres assigned just before triaxial testing.

property sphereKsDivKn

Ratio of shear vs. normal contact stiffness for spheres.

property sphereYoungModulus

Stiffness of spheres.

property strainRate

Strain rate in triaxial loading.

property thickness

thickness of boundaries. It is arbitrary and should have no effect

property timeStepUpdateInterval

interval for GlobalStiffnessTimeStepper

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property upperCorner

Upper corner of the box.

property wallOversizeFactor

Make boundaries larger than the packing to make sure spheres don’t go out during deformation.

property wallStiffnessUpdateInterval

interval for updating the stiffness of sample/boundaries contacts

property wallWalls

Use walls for boundaries (not tested)

Rendering

OpenGLRenderer

class yade.wrapper.OpenGLRenderer(inherits Serializable)

Class responsible for rendering scene on OpenGL devices.

property bgColor

Color of the background canvas (RGB)

property blinkHighlight

Adjust blinking of the body selected in the ‘Simulation Inspection’ window.

property bound

Render body Bound

property cellColor

Color of the periodic cell (RGB).

property clipPlaneActive

Activate/deactivate respective clipping planes

property clipPlaneSe3

Position and orientation of clipping planes

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property dispScale

Artificially enlarge (scale) dispalcements from bodies’ reference positions by this relative amount, so that they become better visible (independently in 3 dimensions). Disbled if (1,1,1).

property dof

Show which degrees of freedom are blocked for each body

property extraDrawers

Additional rendering components (GlExtraDrawer).

property ghosts

Render objects crossing periodic cell edges by cloning them in multiple places (periodic simulations only).

hideBody((OpenGLRenderer)arg1, (int)id) None :

Hide body from id (see OpenGLRenderer::showBody)

property id

Show body id’s

property intrAllWire

Draw wire for all interactions, blue for potential and green for real ones (mostly for debugging)

property intrGeom

Render Interaction::geom objects.

property intrPhys

Render Interaction::phys objects

property intrWire

If rendering interactions, use only wires to represent them.

property light1

Turn light 1 on.

property light2

Turn light 2 on.

property light2Color

Per-color intensity of secondary light (RGB).

property light2Pos

Position of secondary OpenGL light source in the scene.

property lightColor

Per-color intensity of primary light (RGB).

property lightPos

Position of OpenGL light source in the scene.

property mask

Bitmask for showing only bodies where ((mask & Body::mask)!=0)

render((OpenGLRenderer)arg1) None :

Render the scene in the current OpenGL context.

property rotScale

Artificially enlarge (scale) rotations of bodies relative to their reference orientation, so the they are better visible.

property selId

Id of particle that was selected by the user.

setRefSe3((OpenGLRenderer)arg1) None :

Make current positions and orientation reference for scaleDisplacements and scaleRotations.

property shape

Render body Shape

showBody((OpenGLRenderer)arg1, (int)id) None :

Make body visible (see OpenGLRenderer::hideBody)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

Render all bodies with wire only (faster)

GlShapeFunctor

digraph GlShapeFunctor {
        rankdir=RL;
        margin="0.2,0.05";
        "GlShapeFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GlShapeFunctor"];
        "Gl1_Sphere" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_Sphere"];
        "Gl1_Sphere" -> "GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_Wall" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_Wall"];
        "Gl1_Wall" -> "GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_ChainedCylinder" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_ChainedCylinder"];
        "Gl1_ChainedCylinder" -> "Gl1_Cylinder" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_Tetra" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_Tetra"];
        "Gl1_Tetra" -> "GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_PotentialBlock" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_PotentialBlock"];
        "Gl1_PotentialBlock" -> "GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_LevelSet" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_LevelSet"];
        "Gl1_LevelSet" -> "GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_Cylinder" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_Cylinder"];
        "Gl1_Cylinder" -> "GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_Node" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_Node"];
        "Gl1_Node" -> "GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_Box" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_Box"];
        "Gl1_Box" -> "GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_DeformableElement" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_DeformableElement"];
        "Gl1_DeformableElement" -> "GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_Polyhedra" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_Polyhedra"];
        "Gl1_Polyhedra" -> "GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_PFacet" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_PFacet"];
        "Gl1_PFacet" -> "GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_PotentialParticle" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_PotentialParticle"];
        "Gl1_PotentialParticle" -> "GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_Facet" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_Facet"];
        "Gl1_Facet" -> "GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_GridConnection" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_GridConnection"];
        "Gl1_GridConnection" -> "GlShapeFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of GlShapeFunctor.

class yade.wrapper.GlShapeFunctor(inherits Functor Serializable)

Abstract functor for rendering Shape objects.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Gl1_Box(inherits GlShapeFunctor Functor Serializable)

Renders Box object

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Gl1_ChainedCylinder(inherits Gl1_Cylinder GlShapeFunctor Functor Serializable)

Renders ChainedCylinder object including a shift for compensating flexion.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

glutNormalize = True
glutSlices = 8
glutStacks = 4
property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

wire = False
class yade.wrapper.Gl1_Cylinder(inherits GlShapeFunctor Functor Serializable)

Renders Cylinder object

wire(=false)  [static]

Only show wireframe (controlled by glutSlices and glutStacks.

glutNormalize(=true)  [static]

Fix normals for non-wire rendering

glutSlices(=8)  [static]

Number of sphere slices.

glutStacks(=4)  [static]

Number of sphere stacks.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

glutNormalize = True
glutSlices = 8
glutStacks = 4
property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

wire = False
class yade.wrapper.Gl1_DeformableElement(inherits GlShapeFunctor Functor Serializable)

Renders Node object

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Gl1_Facet(inherits GlShapeFunctor Functor Serializable)

Renders Facet object

normals(=false)  [static]

In wire mode, render normals of facets and edges; facet’s colors are disregarded in that case.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

normals = False
property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Gl1_GridConnection(inherits GlShapeFunctor Functor Serializable)

Renders Cylinder object

wire(=false)  [static]

Only show wireframe (controlled by glutSlices and glutStacks.

glutNormalize(=true)  [static]

Fix normals for non-wire rendering

glutSlices(=8)  [static]

Number of cylinder slices.

glutStacks(=4)  [static]

Number of cylinder stacks.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

glutNormalize = True
glutSlices = 8
glutStacks = 4
property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

wire = False
class yade.wrapper.Gl1_LevelSet(inherits GlShapeFunctor Functor Serializable)

Renders LevelSet object

recompute(=false)  [static]

Whether to recompute the triangulation every time it is rendered.

wire(=false)  [static]

Only show wireframe

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

recompute = False
property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

wire = False
class yade.wrapper.Gl1_Node(inherits GlShapeFunctor Functor Serializable)

Renders Node object

quality(=1.0)  [static]

Change discretization level of spheres. quality>1 for better image quality, at the price of more cpu/gpu usage, 0<quality<1 for faster rendering. If mono-color spheres are displayed (Gl1_Node::stripes = False), quality mutiplies Gl1_Node::glutSlices and Gl1_Node::glutStacks. If striped spheres are displayed (Gl1_Node::stripes = True), only integer increments are meaningfull : quality=1 and quality=1.9 will give the same result, quality=2 will give finer result.

wire(=false)  [static]

Only show wireframe (controlled by glutSlices and glutStacks.

stripes(=false)  [static]

In non-wire rendering, show stripes clearly showing particle rotation.

localSpecView(=true)  [static]

Compute specular light in local eye coordinate system.

glutSlices(=12)  [static]

Base number of sphere slices, multiplied by Gl1_Node::quality before use); not used with stripes (see glut{Solid,Wire}Sphere reference)

glutStacks(=6)  [static]

Base number of sphere stacks, multiplied by Gl1_Node::quality before use; not used with stripes (see glut{Solid,Wire}Sphere reference)

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

glutSlices = 12
glutStacks = 6
property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

localSpecView = True
quality = 1.0
stripes = False
property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

wire = False
class yade.wrapper.Gl1_PFacet(inherits GlShapeFunctor Functor Serializable)

Renders Facet object

wire(=false)  [static]

Only show wireframe (controlled by glutSlices and glutStacks.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

wire = False
class yade.wrapper.Gl1_Polyhedra(inherits GlShapeFunctor Functor Serializable)

Renders Polyhedra object

wire(=false)  [static]

Only show wireframe

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

wire = False
class yade.wrapper.Gl1_PotentialBlock(inherits GlShapeFunctor Functor Serializable)

Renders PotentialBlock object

wire(=false)  [static]

Only show wireframe

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

wire = False
class yade.wrapper.Gl1_PotentialParticle(inherits GlShapeFunctor Functor Serializable)

Renders PotentialParticle object

sizeX(=20)  [static]

Number of divisions in the X direction for triangulation

sizeY(=20)  [static]

Number of divisions in the Y direction for triangulation

sizeZ(=20)  [static]

Number of divisions in the Z direction for triangulation

store(=true)  [static]

Whether to store computed triangulation or not

initialized(=false)  [static]

Whether the triangulation is initialized

aabbEnlargeFactor(=1.3)  [static]

Enlargement factor of the Marching Cubes drawing grid, used for displaying purposes. Try different value if the particles are not displayed properly

wire(=false)  [static]

Only show wireframe

aabbEnlargeFactor = 1.3
property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

initialized = False
property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

sizeX = 20
sizeY = 20
sizeZ = 20
store = True
property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

wire = False
class yade.wrapper.Gl1_Sphere(inherits GlShapeFunctor Functor Serializable)

Renders Sphere object

quality(=1.0)  [static]

Change discretization level of spheres. quality>1 for better image quality, at the price of more cpu/gpu usage, 0<quality<1 for faster rendering. If mono-color spheres are displayed (Gl1_Sphere::stripes = False), quality mutiplies Gl1_Sphere::glutSlices and Gl1_Sphere::glutStacks. If striped spheres are displayed (Gl1_Sphere::stripes = True), only integer increments are meaningfull : quality=1 and quality=1.9 will give the same result, quality=2 will give finer result.

wire(=false)  [static]

Only show wireframe (controlled by glutSlices and glutStacks.

stripes(=true)  [static]

In non-wire rendering, show stripes clearly showing particle rotation.

localSpecView(=true)  [static]

Compute specular light in local eye coordinate system.

glutSlices(=12)  [static]

Base number of sphere slices, multiplied by Gl1_Sphere::quality before use); not used with stripes (see glut{Solid,Wire}Sphere reference)

glutStacks(=6)  [static]

Base number of sphere stacks, multiplied by Gl1_Sphere::quality before use; not used with stripes (see glut{Solid,Wire}Sphere reference)

circleView(=false)  [static]

For 2D simulations : display tori instead of spheres, so they will appear like circles if the viewer is looking in the right direction. In this case, remember to disable perspective by pressing “t”-key in the viewer.

circleRelThickness(=0.2)  [static]

If Gl1_Sphere::circleView is enabled, this is the torus diameter relative to the sphere radius (i.e. the circle relative thickness).

circleAllowedRotationAxis(='z')  [static]

If Gl1_Sphere::circleView is enabled, this is the only axis (‘x’, ‘y’ or ‘z’) along which rotation is allowed for the 2D simulation. It allows right orientation of the tori to appear like circles in the viewer. For example, if circleAllowedRotationAxis=’x’ is set, blockedDOFs=”YZ” should also be set for all your particles.

property bases

Ordered list of types (as strings) this functor accepts.

circleAllowedRotationAxis = 'z'
circleRelThickness = 0.2
circleView = False
dict((Serializable)arg1) dict :

Return dictionary of attributes.

glutSlices = 12
glutStacks = 6
property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

localSpecView = True
quality = 1.0
stripes = True
property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

wire = False
class yade.wrapper.Gl1_Tetra(inherits GlShapeFunctor Functor Serializable)

Renders Tetra object

wire(=true)  [static]

TODO

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

wire = True
class yade.wrapper.Gl1_Wall(inherits GlShapeFunctor Functor Serializable)

Renders Wall object

div(=20)  [static]

Number of divisions of the wall inside visible scene part.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

div = 20
property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

GlStateFunctor

class yade.wrapper.GlStateFunctor(inherits Functor Serializable)

Abstract functor for rendering State objects.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

GlBoundFunctor

digraph GlBoundFunctor {
        rankdir=RL;
        margin="0.2,0.05";
        "GlBoundFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GlBoundFunctor"];
        "Gl1_Aabb" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_Aabb"];
        "Gl1_Aabb" -> "GlBoundFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of GlBoundFunctor.

class yade.wrapper.GlBoundFunctor(inherits Functor Serializable)

Abstract functor for rendering Bound objects.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Gl1_Aabb(inherits GlBoundFunctor Functor Serializable)

Render Axis-aligned bounding box (Aabb).

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

GlIGeomFunctor

digraph GlIGeomFunctor {
        rankdir=RL;
        margin="0.2,0.05";
        "GlIGeomFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GlIGeomFunctor"];
        "Gl1_PolyhedraGeom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_PolyhedraGeom"];
        "Gl1_PolyhedraGeom" -> "GlIGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_L3Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_L3Geom"];
        "Gl1_L3Geom" -> "GlIGeomFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_L6Geom" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_L6Geom"];
        "Gl1_L6Geom" -> "Gl1_L3Geom" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of GlIGeomFunctor.

class yade.wrapper.GlIGeomFunctor(inherits Functor Serializable)

Abstract functor for rendering IGeom objects.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Gl1_L3Geom(inherits GlIGeomFunctor Functor Serializable)

Render L3Geom geometry.

axesLabels(=false)  [static]

Whether to display labels for local axes (x,y,z)

axesScale(=1.)  [static]

Scale local axes, their reference length being half of the minimum radius.

axesWd(=1.)  [static]

Width of axes lines, in pixels; not drawn if non-positive

uPhiWd(=2.)  [static]

Width of lines for drawing displacements (and rotations for L6Geom); not drawn if non-positive.

uScale(=1.)  [static]

Scale local displacements (u - u0); 1 means the true scale, 0 disables drawing local displacements; negative values are permissible.

axesLabels = False
axesScale = 1.0
axesWd = 1.0
property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

uPhiWd = 2.0
uScale = 1.0
updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Gl1_L6Geom(inherits Gl1_L3Geom GlIGeomFunctor Functor Serializable)

Render L6Geom geometry.

phiScale(=1.)  [static]

Scale local rotations (phi - phi0). The default scale is to draw \(\pi\) rotation with length equal to minimum radius.

axesLabels = False
axesScale = 1.0
axesWd = 1.0
property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

phiScale = 1.0
property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

uPhiWd = 2.0
uScale = 1.0
updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Gl1_PolyhedraGeom(inherits GlIGeomFunctor Functor Serializable)

Render PolyhedraGeom geometry.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

GlIPhysFunctor

digraph GlIPhysFunctor {
        rankdir=RL;
        margin="0.2,0.05";
        "GlIPhysFunctor" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.GlIPhysFunctor"];
        "Gl1_CpmPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_CpmPhys"];
        "Gl1_CpmPhys" -> "GlIPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_PolyhedraPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_PolyhedraPhys"];
        "Gl1_PolyhedraPhys" -> "GlIPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
        "Gl1_NormPhys" [shape="box",fontsize=8,style="setlinewidth(0.5),solid",height=0.2,URL="yade.wrapper.html#yade.wrapper.Gl1_NormPhys"];
        "Gl1_NormPhys" -> "GlIPhysFunctor" [arrowsize=0.5,style="setlinewidth(0.5)"];
}

Inheritance graph of GlIPhysFunctor.

class yade.wrapper.GlIPhysFunctor(inherits Functor Serializable)

Abstract functor for rendering IPhys objects.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Gl1_CpmPhys(inherits GlIPhysFunctor Functor Serializable)

Render CpmPhys objects of interactions.

contactLine(=true)  [static]

Show contact line

dmgLabel(=true)  [static]

Numerically show contact damage parameter

dmgPlane(=false)  [static]

[what is this?]

epsT(=false)  [static]

Show shear strain

epsTAxes(=false)  [static]

Show axes of shear plane

normal(=false)  [static]

Show contact normal

colorStrainRatio(=-1)  [static]

If positive, set the interaction (wire) color based on \(\eps_N\) normalized by \(\eps_0\) x colorStrainRatio (\(\eps_0\) = CpmPhys.epsCrackOnset ). Otherwise, color based on the residual strength.

epsNLabel(=false)  [static]

Numerically show normal strain

property bases

Ordered list of types (as strings) this functor accepts.

colorStrainRatio = -1.0
contactLine = True
dict((Serializable)arg1) dict :

Return dictionary of attributes.

dmgLabel = True
dmgPlane = False
epsNLabel = False
epsT = False
epsTAxes = False
property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

normal = False
property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Gl1_NormPhys(inherits GlIPhysFunctor Functor Serializable)

Renders NormPhys objects as cylinders of which diameter and color depends on NormPhys.normalForce magnitude.

maxFn(=0)  [static]

Value of NormPhys.normalForce corresponding to maxRadius. This value will be increased (but not decreased ) automatically.

signFilter(=0)  [static]

If non-zero, only display contacts with negative (-1) or positive (+1) normal forces; if zero, all contacts will be displayed.

refRadius(=std::numeric_limits<Real>::infinity())  [static]

Reference (minimum) particle radius; used only if maxRadius is negative. This value will be decreased (but not increased ) automatically. (auto-updated)

maxRadius(=-1)  [static]

Cylinder radius corresponding to the maximum normal force. If negative, auto-updated refRadius will be used instead.

slices(=6)  [static]

Number of sphere slices; (see glutCylinder reference)

stacks(=1)  [static]

Number of sphere stacks; (see glutCylinder reference)

maxWeakFn(=NaN)  [static]

Value that divides contacts by their normal force into the ‘weak fabric’ and ‘strong fabric’. This value is set as side-effect by utils.fabricTensor.

weakFilter(=0)  [static]

If non-zero, only display contacts belonging to the ‘weak’ (-1) or ‘strong’ (+1) fabric.

weakScale(=1.)  [static]

If maxWeakFn is set, scale radius of the weak fabric by this amount (usually smaller than 1). If zero, 1 pixel line is displayed. Colors are not affected by this value.

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

maxFn = 0.0
maxRadius = -1.0
maxWeakFn = nan
refRadius = inf
signFilter = 0
slices = 6
stacks = 1
property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

weakFilter = 0
weakScale = 1.0
class yade.wrapper.Gl1_PolyhedraPhys(inherits GlIPhysFunctor Functor Serializable)

Renders PolyhedraPhys objects as cylinders of which diameter and color depends on PolyhedraPhys::normForce magnitude.

maxFn(=0)  [static]

Value of NormPhys.normalForce corresponding to maxDiameter. This value will be increased (but not decreased ) automatically.

refRadius(=std::numeric_limits<Real>::infinity())  [static]

Reference (minimum) particle radius

signFilter(=0)  [static]

If non-zero, only display contacts with negative (-1) or positive (+1) normal forces; if zero, all contacts will be displayed.

maxRadius(=-1)  [static]

Cylinder radius corresponding to the maximum normal force.

slices(=6)  [static]

Number of sphere slices; (see glutCylinder reference)

stacks(=1)  [static]

Number of sphere stacks; (see glutCylinder reference)

property bases

Ordered list of types (as strings) this functor accepts.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property label

Textual label for this object; must be a valid python identifier, you can refer to it directly from python.

maxFn = 0.0
maxRadius = -1.0
refRadius = inf
signFilter = 0
slices = 6
stacks = 1
property timingDeltas

Detailed information about timing inside the Dispatcher itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

Simulation data

Omega

class yade.wrapper.Omega

The whole YADE world made of one or, possibly, several scenes serving as independent simulations. The Omega instance is accessed as O, e.g., O.bodies

addScene((Omega)arg1) int :

Add new scene to Omega, returns its number

property bodies

Bodies in the current simulation (container supporting index access by id and iteration)

bufferFromIntrsct((Omega)arg1, (Subdomain)subdomain, (int)rank, (int)size, (bool)mirror) object :

returns a (char*) pointer to the underying buffer of intersections[rank], so that it can be overwritten. Size must be passed in advance. Pointer to mirrorIntersections[rank] is returned if mirror=True. Python syntax: bufferFromIntrsct(…)[:]=bytes(something)

property cell

Periodic Cell of the current scene (None if the scene is aperiodic).

childClassesNonrecursive((Omega)arg1, (str)arg2) list :

Return list of all classes deriving from given class, as registered in the class factory

disableGdb((Omega)arg1) None :

Revert SEGV and ABRT handlers to system defaults.

property dt

Current timestep (Δt) value. See dynDt for enabling/disabling automatic Δt updates through a TimeStepper.

property dynDt

Whether a TimeStepper (when present in O.engines) is used for dynamic Δt control.

property dynDtAvailable

Whether a TimeStepper is amongst O.engines, activated or not.

property energy

EnergyTracker of the current simulation. (meaningful only with O.trackEnergy)

property engines

List of engines in the simulation (corresponds to Scene::engines in C++ source code).

exitNoBacktrace((Omega)arg1[, (int)status=0]) None :

Disable SEGV handler and exit, optionally with given status number.

property filename

Filename under which the current simulation was saved (None if never saved).

property forceSyncCount

Counter for number of syncs in ForceContainer, for profiling purposes.

property forces

ForceContainer (forces, torques) in the current simulation.

property interactions

Access to interactions of simulation, by using

  1. id’s of both Bodies of the interactions, e.g. O.interactions[23,65]

  2. iteraction over the whole container:

    for i in O.interactions: print i.id1,i.id2
    

Note

Iteration silently skips interactions that are not real.

intrsctToBytes((Omega)arg1, (Subdomain)subdomain, (int)rank, (bool)mirror) object :

returns a copy of intersections[rank] (a vector<int>) from a subdomain in the form of bytes. Returns a copy mirrorIntersections[rank] if mirror=True.

isChildClassOf((Omega)arg1, (str)arg2, (str)arg3) bool :

Tells whether the first class derives from the second one (both given as strings).

property iter

Get current step number

labeledEngine((Omega)arg1, (str)arg2) object :

Return instance of engine/functor with the given label. This function shouldn’t be called by the user directly; every ehange in O.engines will assign respective global python variables according to labels.

For example:

O.engines=[InsertionSortCollider(label=’collider’)]

collider.nBins=5 # collider has become a variable after assignment to O.engines automatically

load((Omega)arg1, (str)file[, (bool)quiet=False]) None :

Load simulation from file. The file should have been saved in the same version of Yade built or compiled with the same features, otherwise compatibility is not guaranteed. Compatibility may also be affected by different versions of external libraries such as Boost

loadTmp((Omega)arg1[, (str)mark=''[, (bool)quiet=False]]) None :

Load simulation previously stored in memory by saveTmp. mark optionally distinguishes multiple saved simulations

lsTmp((Omega)arg1) list :

Return list of all memory-saved simulations.

property materials

Shared materials; they can be accessed by id or by label

property miscParams

MiscParams in the simulation (Scene::mistParams), usually used to save serializables that don’t fit anywhere else, like GL functors

property numThreads

Get maximum number of threads openMP can use.

pause((Omega)arg1) None :

Stop simulation execution. (May be called from within the loop, and it will stop after the current step).

property periodic

Get/set whether the current scene is periodic or not (True/False).

plugins((Omega)arg1) list :

Return list of all plugins registered in the class factory.

property realtime

Return clock (human world) time the simulation has been running.

reload((Omega)arg1[, (bool)quiet=False]) None :

Reload current simulation

reset((Omega)arg1) None :

Reset simulations completely (including another scenes!).

resetAllScenes((Omega)arg1) None :

Reset all scenes.

resetCurrentScene((Omega)arg1) None :

Reset current scene.

resetThisScene((Omega)arg1) None :

Reset current scene.

resetTime((Omega)arg1) None :

Reset simulation time: step number, virtual and real time. (Doesn’t touch anything else, including timings).

run((Omega)arg1[, (int)nSteps=-1[, (bool)wait=False]]) None :

Run the simulation. nSteps how many steps to run, then stop (if positive); wait will cause not returning to python until simulation will have stopped.

runEngine((Omega)arg1, (Engine)arg2) None :

Run given engine exactly once; simulation time, step number etc. will not be incremented (use only if you know what you do).

property running

Whether background thread is currently running a simulation.

save((Omega)arg1, (str)file[, (bool)quiet=False]) None :

Save current simulation to file (should be .xml or .xml.bz2 or .yade or .yade.gz). .xml files are bigger than .yade, but can be more or less easily (due to their size) opened and edited, e.g. with text editors. .bz2 and .gz correspond both to compressed versions. There are software requirements for successful reloads, see O.load.

saveTmp((Omega)arg1[, (str)mark=''[, (bool)quiet=False]]) None :

Save simulation to memory (disappears at shutdown), can be loaded later with loadTmp. mark optionally distinguishes different memory-saved simulations.

sceneToString((Omega)arg1) object :

Return the entire scene as a string. Equivalent to using O.save(…) except that the scene goes to a string instead of a file. (see also stringToScene())

property speed

Return current calculation speed [iter/sec].

step((Omega)arg1) None :

Advance the simulation by one step. Returns after the step will have finished.

property stopAtIter

Get/set number of iteration after which the simulation will stop.

property stopAtTime

Get/set time after which the simulation will stop.

stringToScene((Omega)arg1, (str)arg2[, (str)mark='']) None :

Load simulation from a string passed as argument (see also sceneToString).

property subStep

Get the current subStep number (only meaningful if O.subStepping==True); -1 when outside the loop, otherwise either 0 (O.subStepping==False) or number of engine to be run (O.subStepping==True)

property subStepping

Get/set whether subStepping is active.

switchScene((Omega)arg1) None :

Switch to alternative simulation (while keeping the old one). Calling the function again switches back to the first one. Note that most variables from the first simulation will still refer to the first simulation even after the switch (e.g. b=O.bodies[4]; O.switchScene(); [b still refers to the body in the first simulation here])

switchToScene((Omega)arg1, (int)arg2) None :

Switch to defined scene. Default scene has number 0, other scenes have to be created by addScene method.

property tags

Tags (string=string dictionary) of the current simulation (container supporting string-index access/assignment)

property thisScene

Return current scene’s id.

property time

Return virtual (model world) time of the simulation.

property timingEnabled

Globally enable/disable timing services (see documentation of the timing module).

tmpFilename((Omega)arg1) str :

Return unique name of file in temporary directory which will be deleted when yade exits.

tmpToFile((Omega)arg1, (str)fileName[, (str)mark='']) None :

Save XML of saveTmp’d simulation into fileName.

tmpToString((Omega)arg1[, (str)mark='']) str :

Return XML of saveTmp’d simulation as string.

property trackEnergy

When energy tracking is enabled or disabled in this simulation.

wait((Omega)arg1) None :

Don’t return until the simulation will have been paused. (Returns immediately if not running).

BodyContainer

class yade.wrapper.BodyContainer
__init__((object)arg1, (BodyContainer)arg2) None
addToClump((BodyContainer)arg1, (object)arg2, (int)arg3[, (int)discretization=0]) None :

Add body b (or a list of bodies) to an existing clump c. c must be clump and b may not be a clump member of c. Clump masses and inertia are adapted automatically (for details see clump()).

See examples/clumps/addToClump-example.py for an example script.

Note

If b is a clump itself, then all members will be added to c and b will be deleted. If b is a clump member of clump d, then all members from d will be added to c and d will be deleted. If you need to add just clump member b, release this member from d first.

append((BodyContainer)arg1, (Body)arg2) int :

Append one Body instance, return its id.

append( (BodyContainer)arg1, (object)arg2) -> object :

Append list of Body instance, return list of ids

appendClumped((BodyContainer)arg1, (object)arg2[, (int)discretization=0]) tuple :

Append given list of bodies as a clump (rigid aggregate); returns a tuple of (clumpId,[memberId1,memberId2,...]). Clump masses and inertia are computed automatically depending upon discretization (for details see clump()).

clear((BodyContainer)arg1) None :

Remove all bodies (interactions not checked)

clump((BodyContainer)arg1, (object)arg2[, (int)discretization=0]) int :

Clump given bodies together (creating a rigid aggregate); returns clumpId. A precise definition of clump masses and inertia when clump members overlap requires spherical members together with discretization>0 and is achieved in this case by integration/summation over mass points using a regular grid of cells (grid cells length is defined as \(L_{min}/discretization\), where \(L_{min}\) is the minimum length of an Axis-Aligned Bounding Box. If *discretization*<=0 sum of inertias from members is simply used, which is faster but accurate only for non-overlapping members).

deleteClumpBody((BodyContainer)arg1, (Body)arg2) None :

Erase clump member.

deleteClumpMember((BodyContainer)arg1, (Body)arg2, (Body)arg3) None :

Erase clump member.

property enableRedirection

let collider switch to optimized algorithm with body redirection when bodies are erased - true by default

erase((BodyContainer)arg1, (int)arg2[, (bool)eraseClumpMembers=0]) bool :

Erase body with the given id; all interaction will be deleted by InteractionLoop in the next step. If a clump is erased use O.bodies.erase(clumpId,True) to erase the clump AND its members.

getRoundness((BodyContainer)arg1[, (list)excludeList=[]]) float :

Returns roundness coefficient RC = R2/R1. R1 is the equivalent sphere radius of a clump. R2 is the minimum radius of a sphere, that imbeds the clump. If just spheres are present RC = 1. If clumps are present 0 < RC < 1. Bodies can be excluded from the calculation by giving a list of ids: O.bodies.getRoundness([ids]).

See examples/clumps/replaceByClumps-example.py for an example script.

insertAtId((BodyContainer)arg1, (Body)arg2, (int)insertatid) int :

Insert a body at theid, (no body should exist in this id)

releaseFromClump((BodyContainer)arg1, (int)arg2, (int)arg3[, (int)discretization=0]) None :

Release body b from clump c. b must be a clump member of c. Clump masses and inertia are adapted automatically (for details see clump()).

See examples/clumps/releaseFromClump-example.py for an example script.

Note

If c contains only 2 members b will not be released and a warning will appear. In this case clump c should be erased.

replace((BodyContainer)arg1, (object)arg2) object
replaceByClumps((BodyContainer)arg1, (list)arg2, (object)arg3[, (int)discretization=0]) list :

Replace spheres by clumps using a list of clump templates and a list of amounts; returns a list of tuples: [(clumpId1,[memberId1,memberId2,...]),(clumpId2,[memberId1,memberId2,...]),...]. A new clump will have the same volume as the sphere, that was replaced. Clump masses and inertia are adapted automatically (for details see clump()).

O.bodies.replaceByClumps( [utils.clumpTemplate([1,1],[.5,.5])] , [.9] ) #will replace 90 % of all standalone spheres by ‘dyads’

See examples/clumps/replaceByClumps-example.py for an example script.

subdomainBodies((BodyContainer)arg1) object :

id’s of bodies with bounds in MPI subdomain

updateClumpProperties((BodyContainer)arg1[, (list)excludeList=[][, (int)discretization=5]]) None :

Manually force Yade to update clump properties mass, volume and inertia (for details of ‘discretization’ value see clump()). Can be used, when clumps are modified or erased during a simulation. Clumps can be excluded from the calculation by giving a list of ids: O.bodies.updateProperties([ids]).

property useRedirection

true if the scene uses up-to-date lists for boundedBodies and realBodies; turned true automatically 1/ after removal of bodies if enableRedirection=True , and 2/ in MPI execution. (auto-updated)

InteractionContainer

class yade.wrapper.InteractionContainer

Access to interactions of simulation, by using

  1. id’s of both Bodies of the interactions, e.g. O.interactions[23,65]

  2. iteraction over the whole container:

    for i in O.interactions: print i.id1,i.id2
    

Note

Iteration silently skips interactions that are virtual i.e. not real.

__init__((object)arg1, (InteractionContainer)arg2) None
all((InteractionContainer)arg1[, (bool)onlyReal=False]) list :

Return list of all interactions. Virtual interaction are filtered out if onlyReal=True, else (default) it dumps the full content.

clear((InteractionContainer)arg1) None :

Remove all interactions, and invalidate persistent collider data (if the collider supports it).

countReal((InteractionContainer)arg1) int :

Return number of interactions that are real.

erase((InteractionContainer)arg1, (int)arg2, (int)arg3) None :

Erase one interaction, given by id1, id2 (internally, requestErase is called – the interaction might still exist as potential, if the Collider decides so).

eraseNonReal((InteractionContainer)arg1) None :

Erase all interactions that are not real .

has((InteractionContainer)arg1, (int)id1, (int)id2[, (bool)onlyReal=False]) bool :

Tell if a pair of ids id1, id2 corresponds to an existing interaction (real or not depending on onlyReal)

nth((InteractionContainer)arg1, (int)arg2) Interaction :

Return n-th interaction from the container (usable for picking random interaction). The virtual interactions are not reached.

property serializeSorted
withBody((InteractionContainer)arg1, (int)arg2) list :

Return list of real interactions of given body.

withBodyAll((InteractionContainer)arg1, (int)arg2) list :

Return list of all (real as well as non-real) interactions of given body.

ForceContainer

class yade.wrapper.ForceContainer
__init__((object)arg1, (ForceContainer)arg2) None
addF((ForceContainer)arg1, (int)id, (Vector3)f[, (bool)permanent=False]) None :

Apply force on body (accumulates). The force applies for one iteration, then it is reset by ForceResetter. # permanent parameter is deprecated, instead of addF(…,permanent=True) use setPermF(…).

addT((ForceContainer)arg1, (int)id, (Vector3)t[, (bool)permanent=False]) None :

Apply torque on body (accumulates). The torque applies for one iteration, then it is reset by ForceResetter. # permanent parameter is deprecated, instead of addT(…,permanent=True) use setPermT(…).

f((ForceContainer)arg1, (int)id[, (bool)sync=False]) Vector3 :

Resultant force on body, excluding gravity. For clumps in openMP, synchronize the force container with sync=True, else the value will be wrong.

getPermForceUsed((ForceContainer)arg1) bool :

Check wether permanent forces are present.

m((ForceContainer)arg1, (int)id[, (bool)sync=False]) Vector3 :

Deprecated alias for t (torque).

permF((ForceContainer)arg1, (int)id) Vector3 :

read the value of permanent force on body (set with setPermF()).

permT((ForceContainer)arg1, (int)id) Vector3 :

read the value of permanent torque on body (set with setPermT()).

reset((ForceContainer)arg1[, (bool)resetAll=True]) None :

Reset the force container, including user defined permanent forces/torques. resetAll=False will keep permanent forces/torques unchanged.

setPermF((ForceContainer)arg1, (int)arg2, (Vector3)arg3) None :

set the value of permanent force on body.

setPermT((ForceContainer)arg1, (int)arg2, (Vector3)arg3) None :

set the value of permanent torque on body.

property syncCount

Number of synchronizations of ForceContainer (cummulative); if significantly higher than number of steps, there might be unnecessary syncs hurting performance.

t((ForceContainer)arg1, (int)id[, (bool)sync=False]) Vector3 :

Torque applied on body. For clumps in openMP, synchronize the force container with sync=True, else the value will be wrong.

MaterialContainer

class yade.wrapper.MaterialContainer

Container for Materials. A material can be accessed using

  1. numerical index in range(0,len(cont)), like cont[2];

  2. textual label that was given to the material, like cont[‘steel’]. This entails traversing all materials and should not be used frequently.

__init__((object)arg1, (MaterialContainer)arg2) None
append((MaterialContainer)arg1, (Material)arg2) int :

Add new shared Material; changes its id and return it.

append( (MaterialContainer)arg1, (object)arg2) -> object :

Append list of Material instances, return list of ids.

index((MaterialContainer)arg1, (str)arg2) int :

Return id of material, given its label.

Scene

class yade.wrapper.Scene(inherits Serializable)

Object comprising a stand-alone simulation.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property doSort

Used, when new body is added to the scene.

property dt

Current timestep for integration.

property isPeriodic

Whether periodic boundary conditions are active.

property iter

Current iteration (computational step) number

property selectedBody

Id of body that is selected by the user

property speed

Current calculation speed [iter/s]

property stopAtIter

Iteration after which to stop the simulation.

property stopAtTime

Time after which to stop the simulation

property subD

subdomain (shape) attached to this proc.

property subStep

Number of sub-step; not to be changed directly. -1 means to run loop prologue (cell integration), 0…n-1 runs respective engines (n is number of engines), n runs epilogue (increment step number and time.

property subStepping

Whether we currently advance by one engine in every step (rather than by single run through all engines).

property subdomain

the subdomain this scene is assigned in MPI/domain decomposition.

property tags

Arbitrary key=value associations (tags like mp3 tags: author, date, version, description etc.)

property time

Simulation time (virtual time) [s]

property trackEnergy

Whether energies are being traced.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

Cell

class yade.wrapper.Cell(inherits Serializable)

Parameters of periodic boundary conditions. Only applies if O.isPeriodic==True.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

flipCell((Cell)arg1) Matrix3 :

Flip periodic cell so that angles between \(R^3\) axes and transformed axes are as small as possible, using the two following facts:1. repeating in \(R^3\) space the corners of a periodic cell defines a regular grid; 2. two cells leading through this process to a unique grid are equivalent and can be flipped one over another. Flipping includes adjustment of Interaction.cellDist for interactions that cross the boundary and didn’t before (or vice versa), and re-initialization of collider. See also collision detection

property flipFlippable

flip automatically as soon as a more compact geometry is possible (see trsf)

getDefGrad((Cell)arg1) Matrix3 :

Returns trsf = deformation gradient tensor \(\mat{F}\) of the cell deformation (http://en.wikipedia.org/wiki/Finite_strain_theory)

getEulerianAlmansiStrain((Cell)arg1) Matrix3 :

Returns Eulerian-Almansi strain tensor \(\mat{e}=\frac{1}{2}(\mat{I}-\mat{b}^{-1})=\frac{1}{2}(\mat{I}-(\mat{F}\mat{F}^T)^{-1})\) of the cell (http://en.wikipedia.org/wiki/Finite_strain_theory)

getFluctuationVelocity((Cell)arg1, (Body)b) Vector3 :

get velocity fluctuation of a body, i.e. the velocity relative to mean field velocity: \(\tilde{\vec{v} }= \vec{v} - (\nabla \vec{v}_m)\cdot \vec{x}\)

getLCauchyGreenDef((Cell)arg1) Matrix3 :

Returns left Cauchy-Green deformation tensor \(\mat{b}=\mat{F}\mat{F}^T\) of the cell (http://en.wikipedia.org/wiki/Finite_strain_theory)

getLagrangianStrain((Cell)arg1) Matrix3 :

Returns Lagrangian strain tensor \(\mat{E}=\frac{1}{2}(\mat{C}-\mat{I})=\frac{1}{2}(\mat{F}^T\mat{F}-\mat{I})=\frac{1}{2}(\mat{U}^2-\mat{I})\) of the cell (http://en.wikipedia.org/wiki/Finite_strain_theory)

getLeftStretch((Cell)arg1) Matrix3 :

Returns left (spatial) stretch tensor of the cell (matrix \(\mat{U}\) from polar decomposition \(\mat{F}=\mat{RU}\) )

getPolarDecOfDefGrad((Cell)arg1) tuple :

Returns orthogonal matrix \(\mat{R}\) and symmetric positive semi-definite matrix \(\mat{U}\) as polar decomposition of deformation gradient \(\mat{F}\) of the cell ( \(\mat{F}=\mat{RU}\) )

getRCauchyGreenDef((Cell)arg1) Matrix3 :

Returns right Cauchy-Green deformation tensor \(\mat{C}=\mat{F}^T\mat{F}\) of the cell (http://en.wikipedia.org/wiki/Finite_strain_theory)

getRightStretch((Cell)arg1) Matrix3 :

Returns right (material) stretch tensor of the cell (matrix \(\mat{V}\) from polar decomposition \(\mat{F}=\mat{RU}=\mat{VR}\ \rightarrow\ \mat{V}=\mat{FR}^T\) )

getRotation((Cell)arg1) Matrix3 :

Returns rotation of the cell (orthogonal matrix \(\mat{R}\) from polar decomposition \(\mat{F}=\mat{RU}\) )

getSmallStrain((Cell)arg1) Matrix3 :

Returns small strain tensor \(\mat{\varepsilon}=\frac{1}{2}(\mat{F}+\mat{F}^T)-\mat{I}\) of the cell (http://en.wikipedia.org/wiki/Finite_strain_theory)

getSpin((Cell)arg1) Vector3 :

Returns the spin defined by the skew symmetric part of velGrad

property hSize

Base cell vectors (columns of the matrix), updated at every step from velGrad (trsf accumulates applied velGrad transformations). Setting hSize during a simulation is not supported by most contact laws, it is only meant to be used at iteration 0 before any interactions have been created.

property hSize0

Value of untransformed hSize with respect to current trsf (computed as trsf ⁻¹ × hSize).

property homoDeform

If >0, deform (velGrad) the cell homothetically by adjusting positions and velocities of bodies. The velocity change is obtained by deriving the expression v=∇v.x with respect to time, where ∇v is the macroscopic velocity gradient, giving in an incremental form: Δv=Δ ∇v x + ∇v Δx across one DEM iteration. As a result, velocities are modified as soon as velGrad changes, according to the first term: Δv(t)=Δ ∇v x(t), while the 2nd term reflects a convective term: Δv’= ∇v v(t-dt/2). The second term is neglected if homoDeform=1. All terms are included if homoDeform=2 (default)

property nextVelGrad

see Cell.velGrad.

property prevHSize

hSize from the previous step, used in the definition of relative velocity across periods.

property prevVelGrad

Velocity gradient in the previous step.

property refHSize

Reference cell configuration, only used with OpenGLRenderer.dispScale. Updated automatically when hSize or trsf is assigned directly; also modified by utils.setRefSe3 (called e.g. by the Reference button in the UI).

property refSize

Reference size of the cell (lengths of initial cell vectors, i.e. column norms of hSize).

Note

Modifying this value is deprecated, use setBox instead.

setBox((Cell)arg1, (Vector3)arg2) None :

Set Cell shape to be rectangular, with dimensions along axes specified by given argument. Shorthand for assigning diagonal matrix with respective entries to hSize.

setBox( (Cell)arg1, (float)arg2, (float)arg3, (float)arg4) -> None :

Set Cell shape to be rectangular, with dimensions along \(x\), \(y\), \(z\) specified by arguments. Shorthand for assigning diagonal matrix with the respective entries to hSize.

shearPt((Cell)arg1, (Vector3)arg2) Vector3 :

Apply shear (cell skew+rot) on the point

property shearTrsf

Current skew+rot transformation (no resize)

property size

Current size of the cell, i.e. lengths of the 3 cell lateral vectors contained in Cell.hSize columns. (auto-updated)

property trsf

Current transformation matrix of the cell \(\mat{F}\) giving current Cell vector \(d\vec{x}\) from its reference state \(d\vec{X}\) as per \(d\vec{x} = \mat{F} d\vec{X}\). Obtained from time integration of velGrad\(\times\mat{F}\) as detailed in the documentation during the prologue of a YADE iteration (before the O.engines loop). (auto-updated)

unshearPt((Cell)arg1, (Vector3)arg2) Vector3 :

Apply inverse shear on the point (removes skew+rot of the cell)

property unshearTrsf

Inverse of the current skew+rot transformation (no resize)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property velGrad

Velocity gradient of the transformation of the Cell; used in NewtonIntegrator. Values of velGrad accumulate in trsf at every step.

note: changing velGrad at the beginning of a timestep would lead to inaccurate integration for that step, as it should normally be changed after the contact laws (but before Newton). To avoid this problem, assignment is deferred automatically. The assigned value is internaly stored in Cell.nextVelGrad and will be applied right in time by Newton integrator.

Warning

Assigning individual components as in O.cell.velGrad[0,0]=1 is not possible (it will not return any error but it will have no effect). Instead, the whole matrix should be assigned, as in O.cell.velGrad=Matrix3(…).

property velGradChanged

true when velGrad has been changed manually (see also Cell.nextVelGrad)

property volume

Current volume of the cell.

wrap((Cell)arg1, (Vector3)arg2) Vector3 :

Transform an arbitrary point into a point in the reference cell

wrapPt((Cell)arg1, (Vector3)arg2) Vector3 :

Wrap point inside the reference cell, assuming the cell has no skew+rot.

Other classes

class yade.wrapper.RegularGrid(inherits Serializable)

A rectilinear (aka uniform or regular) grid, for LevelSet shapes or other purposes. A cubic regular grid extending from a min = (m,m,m) to a max at (M,M,M), with nGP = (n,n,n) ie a spacing = (M-m)/(n-1), can be conveniently obtained from RegularGrid(m,M,n). For more general cases, minimum point min, spacing and nGP have to be passed as such at instantiation.

closestCorner((RegularGrid)arg1, (Vector3)pt[, (bool)unbound=False]) Vector3i :

Returns the Vector3i indices of the closest gridpoint which is smaller (for all components) than pt.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

dims((RegularGrid)arg1) Vector3 :

Returns the grid dimensions along the three axes, as a Vector3.

gridPoint((RegularGrid)arg1, (int)i, (int)j, (int)k) Vector3 :

Returns the Vector3 position of any grid point, given its indices i (along the X-axis), j (Y-axis), k (Z-axis).

max((RegularGrid)arg1) Vector3 :

Returns the maximum corner of the grid.

property min

The minimum corner of the grid.

property nGP

The number of grid points along the three axes as a Vector3i.

property spacing

The (uniform and isotropic) grid spacing between two axis-consecutive grid points.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GlExtraDrawer(inherits Serializable)

Performing arbitrary OpenGL drawing commands; called from OpenGLRenderer (see OpenGLRenderer.extraDrawers) once regular rendering routines will have finished.

This class itself does not render anything, derived classes should override the render method.

property dead

Deactivate the object (on error/exception).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Engine(inherits Serializable)

Basic execution unit of simulation, called from the simulation loop (O.engines)

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GlExtra_OctreeCubes(inherits GlExtraDrawer Serializable)

Render boxed read from file

property boxesFile

File to read boxes from; ascii files with x0 y0 z0 x1 y1 z1 c records, where c is an integer specifying fill (0 for wire, 1 for filled).

property dead

Deactivate the object (on error/exception).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property fillRangeDraw

Range of fill indices that will be rendered.

property fillRangeFill

Range of fill indices that will be filled.

property levelRangeDraw

Range of levels that will be rendered.

property noFillZero

Do not fill 0-fill boxed (those that are further subdivided)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.LBMbody(inherits Serializable)

Body class for Lattice Boltzmann Method

property AVel

Angular velocity of body

property Fh

Hydrodynamical force on body

property Mh

Hydrodynamical momentum on body

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property fm

Hydrodynamic force (LB unit) at t-0.5dt

property force

Hydrodynamic force, need to be reinitialized (LB unit)

property fp

Hydrodynamic force (LB unit) at t+0.5dt

property isEroded

Hydrodynamical force on body

property mm

Hydrodynamic momentum (LB unit) at t-0.5dt

property momentum

Hydrodynamic momentum,need to be reinitialized (LB unit)

property mp

Hydrodynamic momentum (LB unit) at t+0.5dt

property pos

Position of body

property radius

Radius of body (for sphere)

property saveProperties

To save properties of the body

property type

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property vel

Velocity of body

class yade.wrapper.EnergyTracker(inherits Serializable)

Storage for tracing energies. Only to be used if O.trackEnergy is True.

clear((EnergyTracker)arg1) None :

Clear all stored values.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property energies

Energy values, in linear array

items((EnergyTracker)arg1) list :

Return contents as list of (name,value) tuples.

keys((EnergyTracker)arg1) list :

Return defined energies.

total((EnergyTracker)arg1) float :

Return sum of all energies.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GenericPotential(inherits Serializable)

Generic class for potential representation in PotentialLubrication law. Don’t do anything. If set as potential, the result will be a lubrication-only simulation.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

Link class for Lattice Boltzmann Method

property DistMid

Distance between middle of the link and mass center of body

property PointingOutside

True if it is a link pointing outside to the system (from a fluid or solid node)

property VbMid

Velocity of boundary at midpoint

property ct

Coupling term in modified bounce back rule

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property fid

Fluid node identifier

property i

direction index of the link

property idx_sigma_i

sigma_i direction index (Fluid->Solid)

property isBd

True if it is a boundary link

property nid1

fixed node identifier

property nid2

fixed node identifier or -1 if node points outside

property sid

Solid node identifier

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.FastMarchingMethod(inherits Serializable)

Executes a Fast Marching Method (FMM) to solve \(||\vec \nabla \phi|| = c\) for a discrete field \(\phi\) defined on grid, with phiIni serving as boundary condition. Typically, \(c=1\) (see speed) and \(\phi\) is a distance field. Note that the minimum search inherent to the FMM is not yet optimal in terms of execution speed and faster implementations of the FMM may be found elsewhere. See [Duriez2021b] for more details, where the class was coined DistFMM.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property grid

The underlying regular grid.

property known

Gridpoints (indices) with distance known for good: they have been at some point the shortest gp to the surface while executing the FMM.

phi((FastMarchingMethod)arg1) object :

Executes the FMM and returns its solution as a list of list of list, with the [i][j][k] element corresponding to grid.gridPoint(i,j,k)

property phiIni

Initial discrete field defined on the grid that will serve as a boundary condition for the FMM. Field values have to be - inf (resp. inf) for points being far inside (resp. outside) and correct (finite) on each side of the interface. Built-in functions distIniSE (for superellipsoids), phiIniCppPy (for a Python user function, through a mixed C++-Py internal implementation) or phiIniPy (for a Python user function through a pure Py internal implementation) may be used for such a purpose.

property speed

Keep to 1 for a true distance, 2 for the flake-like rose verification of [Duriez2021b].

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.CundallStrackAdhesivePotential(inherits CundallStrackPotential GenericPotential Serializable)

CundallStrack model with adhesive part. Contact is created when \(u/a-\varepsilon < 0\) and released when \(u/a-\varepsilon > l_{adh}\), where \(l_{adh} = f_{adh}/k_n\). This lead to an hysteretic attractive part.

property alpha

Bulk-to-roughness stiffness ratio

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property fadh

Adhesion force.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.LBMnode(inherits Serializable)

Node class for Lattice Boltzmann Method

dict((Serializable)arg1) dict :

Return dictionary of attributes.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.CundallStrackPotential(inherits GenericPotential Serializable)

Potential with only Cundall-and-Strack-like contact.

property alpha

Bulk-to-roughness stiffness ratio

dict((Serializable)arg1) dict :

Return dictionary of attributes.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.Cell(inherits Serializable)

Parameters of periodic boundary conditions. Only applies if O.isPeriodic==True.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

flipCell((Cell)arg1) Matrix3 :

Flip periodic cell so that angles between \(R^3\) axes and transformed axes are as small as possible, using the two following facts:1. repeating in \(R^3\) space the corners of a periodic cell defines a regular grid; 2. two cells leading through this process to a unique grid are equivalent and can be flipped one over another. Flipping includes adjustment of Interaction.cellDist for interactions that cross the boundary and didn’t before (or vice versa), and re-initialization of collider. See also collision detection

property flipFlippable

flip automatically as soon as a more compact geometry is possible (see trsf)

getDefGrad((Cell)arg1) Matrix3 :

Returns trsf = deformation gradient tensor \(\mat{F}\) of the cell deformation (http://en.wikipedia.org/wiki/Finite_strain_theory)

getEulerianAlmansiStrain((Cell)arg1) Matrix3 :

Returns Eulerian-Almansi strain tensor \(\mat{e}=\frac{1}{2}(\mat{I}-\mat{b}^{-1})=\frac{1}{2}(\mat{I}-(\mat{F}\mat{F}^T)^{-1})\) of the cell (http://en.wikipedia.org/wiki/Finite_strain_theory)

getFluctuationVelocity((Cell)arg1, (Body)b) Vector3 :

get velocity fluctuation of a body, i.e. the velocity relative to mean field velocity: \(\tilde{\vec{v} }= \vec{v} - (\nabla \vec{v}_m)\cdot \vec{x}\)

getLCauchyGreenDef((Cell)arg1) Matrix3 :

Returns left Cauchy-Green deformation tensor \(\mat{b}=\mat{F}\mat{F}^T\) of the cell (http://en.wikipedia.org/wiki/Finite_strain_theory)

getLagrangianStrain((Cell)arg1) Matrix3 :

Returns Lagrangian strain tensor \(\mat{E}=\frac{1}{2}(\mat{C}-\mat{I})=\frac{1}{2}(\mat{F}^T\mat{F}-\mat{I})=\frac{1}{2}(\mat{U}^2-\mat{I})\) of the cell (http://en.wikipedia.org/wiki/Finite_strain_theory)

getLeftStretch((Cell)arg1) Matrix3 :

Returns left (spatial) stretch tensor of the cell (matrix \(\mat{U}\) from polar decomposition \(\mat{F}=\mat{RU}\) )

getPolarDecOfDefGrad((Cell)arg1) tuple :

Returns orthogonal matrix \(\mat{R}\) and symmetric positive semi-definite matrix \(\mat{U}\) as polar decomposition of deformation gradient \(\mat{F}\) of the cell ( \(\mat{F}=\mat{RU}\) )

getRCauchyGreenDef((Cell)arg1) Matrix3 :

Returns right Cauchy-Green deformation tensor \(\mat{C}=\mat{F}^T\mat{F}\) of the cell (http://en.wikipedia.org/wiki/Finite_strain_theory)

getRightStretch((Cell)arg1) Matrix3 :

Returns right (material) stretch tensor of the cell (matrix \(\mat{V}\) from polar decomposition \(\mat{F}=\mat{RU}=\mat{VR}\ \rightarrow\ \mat{V}=\mat{FR}^T\) )

getRotation((Cell)arg1) Matrix3 :

Returns rotation of the cell (orthogonal matrix \(\mat{R}\) from polar decomposition \(\mat{F}=\mat{RU}\) )

getSmallStrain((Cell)arg1) Matrix3 :

Returns small strain tensor \(\mat{\varepsilon}=\frac{1}{2}(\mat{F}+\mat{F}^T)-\mat{I}\) of the cell (http://en.wikipedia.org/wiki/Finite_strain_theory)

getSpin((Cell)arg1) Vector3 :

Returns the spin defined by the skew symmetric part of velGrad

property hSize

Base cell vectors (columns of the matrix), updated at every step from velGrad (trsf accumulates applied velGrad transformations). Setting hSize during a simulation is not supported by most contact laws, it is only meant to be used at iteration 0 before any interactions have been created.

property hSize0

Value of untransformed hSize with respect to current trsf (computed as trsf ⁻¹ × hSize).

property homoDeform

If >0, deform (velGrad) the cell homothetically by adjusting positions and velocities of bodies. The velocity change is obtained by deriving the expression v=∇v.x with respect to time, where ∇v is the macroscopic velocity gradient, giving in an incremental form: Δv=Δ ∇v x + ∇v Δx across one DEM iteration. As a result, velocities are modified as soon as velGrad changes, according to the first term: Δv(t)=Δ ∇v x(t), while the 2nd term reflects a convective term: Δv’= ∇v v(t-dt/2). The second term is neglected if homoDeform=1. All terms are included if homoDeform=2 (default)

property nextVelGrad

see Cell.velGrad.

property prevHSize

hSize from the previous step, used in the definition of relative velocity across periods.

property prevVelGrad

Velocity gradient in the previous step.

property refHSize

Reference cell configuration, only used with OpenGLRenderer.dispScale. Updated automatically when hSize or trsf is assigned directly; also modified by utils.setRefSe3 (called e.g. by the Reference button in the UI).

property refSize

Reference size of the cell (lengths of initial cell vectors, i.e. column norms of hSize).

Note

Modifying this value is deprecated, use setBox instead.

setBox((Cell)arg1, (Vector3)arg2) None :

Set Cell shape to be rectangular, with dimensions along axes specified by given argument. Shorthand for assigning diagonal matrix with respective entries to hSize.

setBox( (Cell)arg1, (float)arg2, (float)arg3, (float)arg4) -> None :

Set Cell shape to be rectangular, with dimensions along \(x\), \(y\), \(z\) specified by arguments. Shorthand for assigning diagonal matrix with the respective entries to hSize.

shearPt((Cell)arg1, (Vector3)arg2) Vector3 :

Apply shear (cell skew+rot) on the point

property shearTrsf

Current skew+rot transformation (no resize)

property size

Current size of the cell, i.e. lengths of the 3 cell lateral vectors contained in Cell.hSize columns. (auto-updated)

property trsf

Current transformation matrix of the cell \(\mat{F}\) giving current Cell vector \(d\vec{x}\) from its reference state \(d\vec{X}\) as per \(d\vec{x} = \mat{F} d\vec{X}\). Obtained from time integration of velGrad\(\times\mat{F}\) as detailed in the documentation during the prologue of a YADE iteration (before the O.engines loop). (auto-updated)

unshearPt((Cell)arg1, (Vector3)arg2) Vector3 :

Apply inverse shear on the point (removes skew+rot of the cell)

property unshearTrsf

Inverse of the current skew+rot transformation (no resize)

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property velGrad

Velocity gradient of the transformation of the Cell; used in NewtonIntegrator. Values of velGrad accumulate in trsf at every step.

note: changing velGrad at the beginning of a timestep would lead to inaccurate integration for that step, as it should normally be changed after the contact laws (but before Newton). To avoid this problem, assignment is deferred automatically. The assigned value is internaly stored in Cell.nextVelGrad and will be applied right in time by Newton integrator.

Warning

Assigning individual components as in O.cell.velGrad[0,0]=1 is not possible (it will not return any error but it will have no effect). Instead, the whole matrix should be assigned, as in O.cell.velGrad=Matrix3(…).

property velGradChanged

true when velGrad has been changed manually (see also Cell.nextVelGrad)

property volume

Current volume of the cell.

wrap((Cell)arg1, (Vector3)arg2) Vector3 :

Transform an arbitrary point into a point in the reference cell

wrapPt((Cell)arg1, (Vector3)arg2) Vector3 :

Wrap point inside the reference cell, assuming the cell has no skew+rot.

class yade.wrapper.ParallelEngine(inherits Engine Serializable)

Engine for running other Engine in parallel.

__init__((object)arg1) None

object __init__(tuple args, dict kwds)

__init__( (object)arg1, (list)arg2) -> object :

Construct from (possibly nested) list of slaves.

property dead

If true, this engine will not run at all; can be used for making an engine temporarily deactivated and only resurrect it at a later point.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property execCount

Cumulative count this engine was run (only used if O.timingEnabled==True).

property execTime

Cumulative time in nanoseconds this Engine took to run (only used if O.timingEnabled==True).

property label

Textual label for this object; must be valid python identifier, you can refer to it directly from python.

property ompThreads

Number of threads to be used in the engine. If ompThreads<0 (default), the number will be typically OMP_NUM_THREADS or the number N defined by ‘yade -jN’ (this behavior can depend on the engine though). This attribute will only affect engines whose code includes openMP parallel regions (e.g. InteractionLoop). This attribute is mostly useful for experiments or when combining ParallelEngine with engines that run parallel regions, resulting in nested OMP loops with different number of threads at each level.

property slaves

List of lists of Engines; each top-level group will be run in parallel with other groups, while Engines inside each group will be run sequentially, in given order.

property timingDeltas

Detailed information about timing inside the Engine itself. Empty unless enabled in the source code and O.timingEnabled==True.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.MPIBodyContainer(inherits Serializable)

a dummy container to serialize and send.

property bContainer

a dummy body container to serialize

clearContainer((MPIBodyContainer)arg1) None :

clear bodies in the container

dict((Serializable)arg1) dict :

Return dictionary of attributes.

getCount((MPIBodyContainer)arg1) int :

get container count

insertBody((MPIBodyContainer)arg1, (int)bodyId) None :

insert a body (by id) in this container

insertBodyListPy((MPIBodyContainer)arg1, (list)listOfIds) None :

inset a list of bodies (by ids)

property subdomainRank

origin rank of this container

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.PhaseCluster(inherits Serializable)

Preliminary.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property entryPore

the pore of the cluster incident to the throat with smallest entry Pc.

property entryRadius

smallest entry capillary pressure.

getCapPressure((PhaseCluster)arg1, (int)numf) float :

get local capillary pressure

getCapVol((PhaseCluster)arg1, (int)numf) float :

get position of the meniscus - in terms of volume

getConductivity((PhaseCluster)arg1, (int)numf) float :

get conductivity

getFlux((PhaseCluster)arg1, (int)interface) float :

get flux at an interface (i.e. velocity of the menicus), the index to be used is the rank of the interface in the same order as in getInterfaces().

getInterfaces((PhaseCluster)arg1[, (int)cellId=-1]) list :

get the list of interfacial pore-throats associated to a cluster, listed as [id1,id2,area,index] where id2 is the neighbor pore outside the cluster and index is the position in the global cluster’s list of interfaces. If cellId>=0 only the interfaces adjacent to the corresponding inner cell are returned.

getPores((PhaseCluster)arg1) object :

get the list of pores by index

property interfacialArea

interfacial area of the cluster

property label

Unique label of this cluster, should be reflected in pores of this cluster.

setCapPressure((PhaseCluster)arg1, (int)numf, (float)pCap) None :

set local capillary pressure

setCapVol((PhaseCluster)arg1, (int)numf, (float)vCap) None :

set position of the meniscus - in terms of volume

solvePressure((PhaseCluster)arg1) None :

Solve 1-phase flow in one single cluster defined by its id.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

updateCapVol((PhaseCluster)arg1, (int)numf, (float)dt) float :

increments throat’s volume of given interface by flux*dt

updateCapVolList((PhaseCluster)arg1, (float)dt) None :

increments throat’s volume of all interfaces by flux*dt

property volume

cumulated volume of all pores.

class yade.wrapper.TimingDeltas
property data

Get timing data as list of tuples (label, execTime[nsec], execCount) (one tuple per checkpoint)

reset((TimingDeltas)arg1) None :

Reset timing information

class yade.wrapper.MatchMaker(inherits Serializable)

Class matching pair of ids to return pre-defined (for a pair of ids defined in matches) or derived value (computed using algo) of a scalar parameter. It can be called (id1, id2, val1=NaN, val2=NaN) in both python and c++.

Note

There is a converter from python number defined for this class, which creates a new MatchMaker returning the value of that number; instead of giving the object instance therefore, you can only pass the number value and it will be converted automatically.

property algo

Algorithm used to compute value when no match for ids is found. Possible values are

  • ‘avg’ (arithmetic average)

  • ‘min’ (minimum value)

  • ‘max’ (maximum value)

  • ‘harmAvg’ (harmonic average)

The following algo algorithms do not require meaningful input values in order to work:

  • ‘val’ (return value specified by val)

  • ‘zero’ (always return 0.)

computeFallback((MatchMaker)arg1, (float)val1, (float)val2) float :

Compute algo value for val1 and val2, using algorithm specified by algo.

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property matches

Array of (id1,id2,value) items; queries matching id1 + id2 or id2 + id1 will return value

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property val

Constant value returned if there is no match and algo is val

class yade.wrapper.Serializable
dict((Serializable)arg1) dict :

Return dictionary of attributes.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GlExtra_LawTester(inherits GlExtraDrawer Serializable)

Find an instance of LawTester and show visually its data.

property dead

Deactivate the object (on error/exception).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property tester

Associated LawTester object.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

class yade.wrapper.GlExtra_AlphaGraph(inherits GlExtraDrawer Serializable)

Display the outer surface defined by alpha contour. Add it to qt.Renderer().extraDrawers. If no instance of TesselationWrapper is provided, the functor will create its own. See scripts/examples/alphaShapes/GlDrawAlpha.py.

property alpha

alpha value

property color

color

property dead

Deactivate the object (on error/exception).

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property fixedAlpha

fixedAlpha option

property lighting

lighting of cylinders

property lineWidth

lineWidth in pixels

property radius

radius of cylinder representation, if null 1/12th of average diameter will be used

refresh((GlExtra_AlphaGraph)arg1) None :

Refresh internals. Particularly usefull for correct display after the TesselationWrapper is modified externally, not needed if ‘wire’=True

property shrinkedAlpha

shrinkedAlpha value

property tesselationWrapper

Associated instance of TesselationWrapper.

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property wire

display as solid cylinders or lines

class yade.wrapper.LinExponentialPotential(inherits CundallStrackPotential GenericPotential Serializable)

LinExponential Potential with only Cundall-and-Strack-like contact. The LinExponential potential formula is \(F(u) = \frac{k*(x_e-x_0)}{x_e}(u/a-x_0)\exp\left(\frac{-(u/a)}{x_e-x_0}\right)\). Where \(k\) is the slope at the origin, \(x_0\) is the position where the potential cross \(0\) and \(x_e\) is the position of the extremum.

property F0

Force at contact. Force when \(F_0 = F(u=0)\) (LinExponential)

property Fe

Extremum force. Value of force at extremum. (LinExponential)

property alpha

Bulk-to-roughness stiffness ratio

computeParametersFromF0((LinExponentialPotential)arg1, (float)F0, (float)xe, (float)k) None :

Set parameters of the potential, with \(k\) computed from \(F_0\)

computeParametersFromF0Fe((LinExponentialPotential)arg1, (float)xe, (float)Fe, (float)F0) None :

Set parameters of the potential, with \(k\) and \(x_0\) computed from \(F_0\) and \(F_e\)

dict((Serializable)arg1) dict :

Return dictionary of attributes.

property k

Slope at the origin (stiffness). (LinExponential)

potential((LinExponentialPotential)arg1, (float)u) float :

Get potential value at any point.

setParameters((LinExponentialPotential)arg1, (float)x0, (float)xe, (float)k) None :

Set parameters of the potential

updateAttrs((Serializable)arg1, (dict)arg2) None :

Update object attributes from given dictionary

property x0

Equilibrium distance. Potential force is 0 at \(x_0\) (LinExponential)

property xe

Extremum position. Position of local max/min of force. (LinExponential)