\( \usepackage{euler} % must be loaded before fontspec for the whole doc (below); this must be kept for pngmath, however \usepackage{hyperref} \usepackage{amsmath} \usepackage{amsbsy} %\usepackage{mathabx} \usepackage{underscore} \usepackage[all]{xy} % Metadata of the pdf output \hypersetup{pdftitle={Yade Documentation}} \hypersetup{pdfauthor={Smilauer, V., et al.}} \hypersetup{pdfkeywords={Discrete element method, granular materials, contact law, hydromechanical coupling}} % symbols \renewcommand{\mat}{\boldsymbol} \renewcommand{\vec}{\boldsymbol} \renewcommand{\tens}{\boldsymbol} %normalized and locfram here \def\normalized#1{\widehat{#1}} \def\locframe#1{\widetilde{#1}} % timestep \def\Dt{\Delta t} \def\Dtcr{\Dt_{\rm cr}} % algorithm complexity \def\bigO#1{{\mathcal{O}(#1)}} % variants for greek symbols \let\epsilon\varepsilon \let\theta\vartheta \let\phi\varphi % shorthands \let\sig\sigma \let\eps\epsilon % variables at different points of time \def\prev#1{#1^-} \def\pprev#1{#1^\ominus} \def\curr#1{#1^{\circ}} \def\nnext#1{#1^\oplus} \def\next#1{#1^+} % shorthands for geometry \def\currn{\curr{\vec{n}}} \def\currC{\curr{\vec{C}}} \def\uT{\vec{u}_T} \def\curruT{\curr{\vec{u}}_T} \def\prevuT{\prev{\vec{u}}_T} \def\currn{\curr{\vec{n}}} \def\prevn{\prev{\vec{n}}} % motion \def\pprevvel{\pprev{\dot{\vec{u}}}} \def\nnextvel{\nnext{\dot{\vec{u}}}} \def\curraccel{\curr{\ddot{\vec{u}}}} \def\prevpos{\prev{\vec{u}}} \def\currpos{\curr{\vec{u}}} \def\nextpos{\next{\vec{u}}} \def\curraaccel{\curr{\dot{\vec{\omega}}}} \def\pprevangvel{\pprev{\vec{\omega}}} \def\nnextangvel{\nnext{\vec{\omega}}} \def\loccurr#1{\curr{\locframe{#1}}} \def\numCPU{n_{\rm cpu}} \DeclareMathOperator{\Align}{Align} \DeclareMathOperator{\sign}{sgn} % sorting algorithms \def\isleq#1{\currelem{#1}\ar@/^/[ll]^{\leq}} \def\isnleq#1{\currelem{#1}\ar@/^/[ll]^{\not\leq}} \def\currelem#1{\fbox{$#1$}} \def\sortSep{||} \def\sortInv{\hbox{\phantom{||}}} \def\sortlines#1{\xymatrix@=3pt{#1}} \def\crossBound{||\mkern-18mu<} \)

# Welcome to Yade’s documentation!

# Guided tour

- Introduction
  - Getting started
  - Architecture overview
- Tutorial
  - Introduction
  - Hands-on
  - Data mining
  - Setting up a simulation
  - Advanced & more
  - Examples with tutorial
  - More examples

# Yade for users

- DEM formulation
  - Collision detection
  - Creating interaction between particles
  - Kinematic variables
  - Contact model (example)
  - Motion integration
  - Periodic boundary conditions
  - Computational aspects
- User’s manual
  - Scene construction
  - Controlling simulation
  - Postprocessing
  - Python specialties and tricks
  - Extending Yade
  - Troubleshooting
  - Getting in touch with Yade community
- Yade wrapper class reference
  - Bodies
  - Interactions
  - Global engines
  - Partial engines
  - Dispatchers
  - Functors
  - Bounding volume creation
  - Interaction Geometry creation
  - Interaction Physics creation
  - Constitutive laws
  - Internal forces
  - Callbacks
  - Preprocessors
  - Rendering
  - Simulation data
  - Other classes
- Yade modules reference
  - yade.bf module
  - yade.bodiesHandling module
  - yade.export module
  - yade.geom module
  - yade.gridpfacet module
  - yade.libVersions module
  - yade.linterpolation module
  - yade.log module
  - yade.math module
  - yade.minieigenHP module
  - yade.mpy module
  - yade.pack module
  - yade.plot module
  - yade.polyhedra_utils module
  - yade.post2d module
  - yade.potential_utils module
  - yade.qt module
  - yade.timing module
  - yade.utils module
  - yade.ymport module
- Installation
  - Packages
  - Docker
  - Source code
  - Speed-up compilation
  - Cloud Computing
  - GPU Acceleration
  - Special builds
  - Yubuntu
- Acknowledging Yade

# Yade for programmers

- Programmer’s manual
  - Build system
  - Development tools
  - Debugging
  - Regression tests
  - Conventions
  - Support framework
  - Simulation framework
  - Runtime structure
  - Python framework
  - Adding a new python/C++ module
  - Maintaining compatibility
- Yade on GitLab
  - Fast checkout (read-only)
  - Branches on GitLab
  - Merge requests
  - Guidelines for pushing

# Theoretical background and extensions

- DEM formulation
- CFD-DEM coupled simulations with Yade and OpenFOAM
  - Supported versions and examples
  - Background
  - Setting up a case
  - Post-Processing
  - Using blockMeshDict
  - Using polyMesh
- FEM-DEM hierarchical multiscale modeling with Yade and Escript
  - Introduction
  - Finite element formulation
  - Multiscale solution procedure
  - Work on the YADE side
  - Work on the Escript side
  - Example tests
  - Disclaim
- Simulating Acoustic Emissions in Yade
  - Summary
  - Model description
  - Activating the algorithm within Yade
  - Visualizing and post processing acoustic emissions
  - Consideration of rock heterogeneity
- Using YADE 1D vertical VANS fluid resolution
  - DEM-fluid coupling and fluid resolution in YADE
  - Application of drag and buoyancy forces (HydroForceEngine::action)
  - Solid phase averaging (HydroForceEngine::averageProfile)
  - Fluid resolution\HydroForceEngine::fluidResolution
- Potential Particles and Potential Blocks
  - Introduction
  - Potential Particles code (PP)
  - Potential Blocks code (PB)
  - Engines
  - Contact Law
  - Shape definition of a PP and a PB
  - Body definition of a PP and a PB
  - Boundary Particles
  - Visualization
  - Axis-Aligned Bounding Box
  - Block Generation algorithm
  - Examples
  - Disclaimer
  - References
- Bayesian Calibration using GrainLearning
  - Installation
  - Dynamic Systems
  - Bayesian Filtering
  - In Yade
  - In GrainLearning
  - Running Bayesian calibration
  - Setting the stopping criteria
  - Analyzing and visualizing the results
  - Particle-particle collision
  - Triaxial compression

# Performance enhancements

- Accelerating Yade’s FlowEngine with GPU
  - Summary
  - Hardware, Software, and Model Requirements
  - Install CUDA
  - Install OpenBlas, and Lapack
  - Install SuiteSparse
  - Compile Yade
  - Controlling the GPU
  - Performance increase
- MPI parallelization
  - Concepts
  - Walkthrough
  - MPI initialization and communications
  - Splitting
  - Merging
  - Hints and problems to expect
  - Control variables
  - Benchmark
- Using YADE with cloud computing on Amazon EC2
  - Summary
  - Launching an EC2 instance
  - Installing YADE and managing files
  - Plotting output in the terminal
  - Comments
- High precision calculations
  - Installation
  - Supported modules
  - Double, quadruple, octuple and higher precisions
  - Compatibility
  - Debugging

# Short-courses

- THM short-course
  - Installing Yade (for Windows and Mac users)
  - Introduction to Bash and Python
  - Day 1 - Yade Hands-on part 1
  - Day 1 - Yade Hands-on part 2
  - Day 2 - Fluids Hands-on part 1
  - Day 3 - Thermal Hands-on part 1
  - Day 3 - Thermal Hands-on part 2

# Literature

- Yade Technical Archive
  - About
  - Contribute
  - Contact
  - Archive
- Publications on Yade
  - Journal articles
  - Conference materials and book chapters
  - Master and PhD theses
  - yadeTechArchive
- References

# Yade community events

- Yade community events

# Indices and tables

- Index

- Module Index

- Search Page