Cohesive Particle Model milauer using the Discrete Element Method - - PowerPoint PPT Presentation

cohesive particle model
SMART_READER_LITE
LIVE PREVIEW

Cohesive Particle Model milauer using the Discrete Element Method - - PowerPoint PPT Presentation

Cohesive particle model & Yade Vclav Cohesive Particle Model milauer using the Discrete Element Method DEM on the Yade platform CPM Overview Stresses Calibration Yade Introduction Vclav milauer Simulation Code


slide-1
SLIDE 1

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Cohesive Particle Model using the Discrete Element Method

  • n the Yade platform

Václav Šmilauer

CTU Prague & UJF Grenoble

24 June 2010

slide-2
SLIDE 2

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Outline

1 Discrete Element Method 2 Cohesive Particle Model

Overview Stresses Calibration

3 Yade

Introduction Simulation Code Functionality

4 Yade-powered projects

Past Present

slide-3
SLIDE 3

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Particle models history

in mechanics since 1970 (Cundall, soil mechanics) continuum=particles+contacts, relatively simple contact laws suitable for “discontinua” behavior different flavors of particle methods (DOF number, static/dynamic problem, particle type)

slide-4
SLIDE 4

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Classification

lattice models (no mass, 3/6 DOFs, spring/beam links between particles; 2D variants) mass-spring (3 DOFs, explicit dynamics) DEM (discrete element method) — particles with 6 DOFs, rigid shape (rigid), inter-particle collisions DEM+FEM (“multi-body dynamics”) — particles are deformable (FEM) and collide (DEM)

slide-5
SLIDE 5

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Classification

lattice models (no mass, 3/6 DOFs, spring/beam links between particles; 2D variants) mass-spring (3 DOFs, explicit dynamics) DEM (discrete element method) — particles with 6 DOFs, rigid shape (rigid), inter-particle collisions DEM+FEM (“multi-body dynamics”) — particles are deformable (FEM) and collide (DEM)

slide-6
SLIDE 6

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Classification

lattice models (no mass, 3/6 DOFs, spring/beam links between particles; 2D variants) mass-spring (3 DOFs, explicit dynamics) DEM (discrete element method) — particles with 6 DOFs, rigid shape (rigid), inter-particle collisions DEM+FEM (“multi-body dynamics”) — particles are deformable (FEM) and collide (DEM)

slide-7
SLIDE 7

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Classification

lattice models (no mass, 3/6 DOFs, spring/beam links between particles; 2D variants) mass-spring (3 DOFs, explicit dynamics) DEM (discrete element method) — particles with 6 DOFs, rigid shape (rigid), inter-particle collisions DEM+FEM (“multi-body dynamics”) — particles are deformable (FEM) and collide (DEM)

slide-8
SLIDE 8

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

DEM and DEMs

smooth

collision prediction t – between collisions restitution equations gas dynamics (few contacts)

non-smooth

collision as shape overlaps t – a given ∆t repulsive force, integration of motion equations dense packings

slide-9
SLIDE 9

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

DEM and DEMs

smooth

collision prediction t – between collisions restitution equations gas dynamics (few contacts)

non-smooth

collision as shape overlaps t – a given ∆t repulsive force, integration of motion equations dense packings

slide-10
SLIDE 10

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Outline

1 Discrete Element Method 2 Cohesive Particle Model

Overview Stresses Calibration

3 Yade

Introduction Simulation Code Functionality

4 Yade-powered projects

Past Present

slide-11
SLIDE 11

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Overview

concrete (generally cohesive-frictional materials) contacts have 3 DOFs: normal and shear strains εN, εT and stresses σN, σT model features:

tensile damage + visco-damage compressive plasticity shear plasticity + visco-plasticity

parameters mostly with a physical meaning calibration procedures designed

slide-12
SLIDE 12

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Normal stress evaluation

σN = [1 − ωH(εN)] kNεN + σNv( ˙ εNd)

εN > 0 εT εT εN < 0

εN normal strain kN contact normal modulus ω internal damage variable, ω = g(κ), κ = max εN g(κ) damage evolution function (parameters ε0 and εf ) σNv damage overstress, evaluated iteratively from induced damage strain rate ˙ εNd (τd, Md)

slide-13
SLIDE 13

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Normal stress evaluation

σN = [1 − ωH(εN)] kNεN + σNv( ˙ εNd)

−0.00010 −0.00005 0.00000 0.00005 0.00010 0.00015 0.00020 0.00025 0.00030 εN −2000000 −1000000 1000000 2000000 3000000 σN ε0 εf

σN

εN normal strain kN contact normal modulus ω internal damage variable, ω = g(κ), κ = max εN g(κ) damage evolution function (parameters ε0 and εf ) σNv damage overstress, evaluated iteratively from induced damage strain rate ˙ εNd (τd, Md)

slide-14
SLIDE 14

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Normal stress evaluation

σN = [1 − ωH(εN)] kNεN + σNv( ˙ εNd)

0.0000 0.0001 0.0002 0.0003 0.0004 0.0005 0.0006 0.0007 0.0008 0.0009 εN 0.0 0.2 0.4 0.6 0.8 1.0 ω(εN)

ω

ω = g(κ) = 1 − εf κ exp

  • −κ − ε0

εf

  • εN normal strain

kN contact normal modulus ω internal damage variable, ω = g(κ), κ = max εN g(κ) damage evolution function (parameters ε0 and εf ) σNv damage overstress, evaluated iteratively from induced damage strain rate ˙ εNd (τd, Md)

slide-15
SLIDE 15

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Normal stress evaluation

σN = [1 − ωH(εN)] kNεN + σNv( ˙ εNd)

0.0000 0.0001 0.0002 0.0003 0.0004 0.0005 εN 1000000 2000000 3000000 4000000 5000000 σN

˙ εNτd = 100 ˙ εNτd = 10 ˙ εNτd = 1 ˙ εNτd = 0.1 ˙ εNτd = 0.001 ˙ εNτd = 10−6 ˙ εNτd = 10−12

σNv( ˙ εNd) = kNε0τd ˙ εNdMd εN normal strain kN contact normal modulus ω internal damage variable, ω = g(κ), κ = max εN g(κ) damage evolution function (parameters ε0 and εf ) σNv damage overstress, evaluated iteratively from induced damage strain rate ˙ εNd (τd, Md)

slide-16
SLIDE 16

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Shear stress evalution (after σN)

Shear stress, plasticity function, plastic flow rule σT = kT(εT − εTp) f (σN, σT) = |σT| − (cT0(1 − ω) − σN tan ϕ) ˙ εTp = ˙ λ σT |σT|

cT0 σN ±|σT| σT1 σT2 ϕ

rpl ˙ εTp ˙ εTp f = 0 f = 0

−3.0 −2.5 −2.0 −1.5 −1.0 −0.5 0.0 0.5 σN ×107 −3 −2 −1 1 2 3 ±|σT| ×107

linear, ω=0 linear, ω=1 log+lin, ω=0 log+lin, ω=1

slide-17
SLIDE 17

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Model parameters

Elastic parameters moduli kN, kT, interaction radius RI. Plasticity+damage parameters limit elastic strain ε0, damage evolution parameter εf ; friction angle ϕ, cohesion cT0. Viscosity parameters characteristic time τd, exponent Md; (τpl, Mpl) Confinement parameters hardening strain εs, hardening modulus ˜ Ks, plasticity function parameter Y0.

slide-18
SLIDE 18

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Calibrable properties

Scalar values Young’s modulus E, Poisson’s ratio ν tensile and compressive strengths ft, fc, fracture energy Gf . Qualitative matching confinement behavior rate-dependent behavior

slide-19
SLIDE 19

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Uniaxial tension and compression

0.05 0.00 0.05 0.04 0.03 0.02 0.01 0.00 0.01 0.02 0.03 0.04

0.040 . 4 0.080 0.080 0.120 . 1 2 . 1 6 0.200

0.00 0.03 0.06 0.09 0.12 0.15 0.18 0.21 0.24 smooth damage

0.0030 0.0025 0.0020 0.0015 0.0010 0.0005 0.0000 0.0005 0.0010 ε 2.5 2.0 1.5 1.0 0.5 0.0 0.5 σ 1e7

σ

slide-20
SLIDE 20

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Uniaxial tension and compression

0.0030 0.0025 0.0020 0.0015 0.0010 0.0005 0.0000 0.0005 0.0010 ε 2.5 2.0 1.5 1.0 0.5 0.0 0.5 σ 1e7

σ

slide-21
SLIDE 21

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Bending setup

0.0000 0.0002 0.0004 0.0006 0.0008 0.0010 0.0012 0.0014 0.0016 0.0018 dz 10 5 5 10 pistF,suppF0,suppF1

pistF suppF0 suppF1

slide-22
SLIDE 22

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Confined compression

−0.05 −0.04 −0.03 −0.02 −0.01 0.00 εN −8 −7 −6 −5 −4 −3 −2 −1 σN [Pa] ×108

exp 20 MPa num 20 MPa exp 200 MPa num 200 MPa exp 100 MPa num 100 MPa exp 400 MPa num 400 MPa

σ0 ε ε σ0 σ0 σ0

slide-23
SLIDE 23

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Tensile rate effect

slide-24
SLIDE 24

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Compressive rate effect

slide-25
SLIDE 25

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Outline

1 Discrete Element Method 2 Cohesive Particle Model

Overview Stresses Calibration

3 Yade

Introduction Simulation Code Functionality

4 Yade-powered projects

Past Present

slide-26
SLIDE 26

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Generalities

www.yade-dem.org launchpad.net/yade initiated 2004 by Frédéric Donzé in c++, on Linux/Unix

  • bject-oriented, “toolkit of

algorithms” substantially reworked during the thesis

documentation parallel computation batch scheduling system profiling, debugging tools python interface Z

slide-27
SLIDE 27

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Python as the interface

scripting language, large library, similar to matlab easy to interface with fortran/c/c++ Yade classes mirrored in python scripts efficient for simulation setup, postprocessing compatible over Yade’s internal changes runtime control & debugging from the command line

slide-28
SLIDE 28

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Data components

Body (particle) Shape Sphere, Facet, . . . Material ElastMat, FrictMat, . . . State position, orientation, velocity, . . . Bound for approximate collision detection (Aabb) Generalized forces Interaction of 2 bodies InteractionGeometry different for Sphere+Sphere, Facet+Sphere, . . . InteractionPhysics internal state of interaction (plasticity variables, damage, history)

slide-29
SLIDE 29

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Functional components

Engines GlobalEngine act on all bodies/interactions PartialEngine act on some bodies/interactions Dispatcher calls functions based on classes of arguments: e.g. Facet+Sphere needs different function than Sphere+Sphere collision Functors Callable function-like objects. Accept only certain classes and are called by Dispatchers.

slide-30
SLIDE 30

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Simulation structure

bodies

Shape Material State Bound

interactions

geometry collision detection pass 2 strain evaluation physics properties of new interactions constitutive law compute forces from strains

forces

(generalized) update bounds collision detection pass 1

  • ther forces

(gravity, BC, ...) miscillaneous engines (recorders, ...) reset forces forces → acceleration velocity update position update

simulation loop

increment time by Δt

slide-31
SLIDE 31

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

What it looks like in python I.

Simulation loop in code

O.engines=[ ForceResetter(), BoundDispatcher([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]), InsertionSortCollider(), InteractionDispatchers( [Ig2_Sphere_Sphere_Dem3DofGeom(), Ig2_Facet_Sphere_Dem3DofGeom [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_Dem3Dof_FrictPhys_Basic()], ), GravityEngine(gravity=(0,0,-9.81)), NewtonIntegrator() ]

Ig2 2-ary functor creating InteractionGeometry (Bo1, Ig2, Ip2, Law2) Facet_Sphere accepting Facet and Sphere as its arguments Dem3DofGeom returning Dem3DofGeom instance

slide-32
SLIDE 32

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

What it looks like in python II.

Simulation data in code

O.materials.append( FrictMat(young=30e9,poisson=.3,density=3000,frictionAngle=.5) ) O.bodies.append([ utils.sphere((0,0,3),radius=1), utils.facet([(-1,-1,0),(1,0,0),(0,1,0)]) ]) O.dt=.5*utils.PWaveTimeStep()

Running simulation

O.run(10000); O.wait() # Basic simulation control O.save(’/tmp/a.xml’) print O.bodies[3].state.vel # inspection of (c++) data print O.interactions[0,2].geom.normal print O.materials[0].young quit()

slide-33
SLIDE 33

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Engines

Loading control (BoundaryControllers) TriaxialStressController (stress/strain rate), UniaxialStrainer (strain control), PeriIsoCompressor (periodic iso-stress), Peri3dController (periodic stress tensor) Applying conditions GravityEngine (constant gravity field), ForceEngine, RotationEngine, TranslationEngine, . . . Algorithms InsertionSortCollider (collision detection), NewtonIntegrator (2nd order central-differences explicit integration scheme), GlobalStiffnessTimeStepper (adjust timestep based on packing stiffness)

slide-34
SLIDE 34

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Particles and interactions

Shapes Sphere, Facet, Wall, Box. (Tetra, polyhedral grains, . . . ). Handling collisions (InteractionGeometry) Handling collisions of 2×Sphere, Facet+Sphere, Box+Sphere, Wall+Sphere. Constitutive laws Dry friction (classical DEM), Mindlin’s contact, Plassiard’s formulation, Cohesive-frictional model, rock model, concrete model, capillary effects between grains. (more

  • utside source tree or undocumented)

Coupling OpenFOAM, Comsol, fluids.

slide-35
SLIDE 35

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Outline

1 Discrete Element Method 2 Cohesive Particle Model

Overview Stresses Calibration

3 Yade

Introduction Simulation Code Functionality

4 Yade-powered projects

Past Present

slide-36
SLIDE 36

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Jan Kozicki, Grenoble

3d lattice model of tensile concrete fracture.

slide-37
SLIDE 37

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Luc Scholtès, Grenoble

Behavior of granular media with capillary effects between grains.

slide-38
SLIDE 38

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Wenjie Shiu, Grenoble

Missile impact on concrete structures.

slide-39
SLIDE 39

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Wenjie Shiu, Grenoble

Missile impact on concrete structures.

slide-40
SLIDE 40

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Emanuele Catalano, Grenoble

A finite volumes-DEM coupled formulation for fluid-solid interactions in granular media.

slide-41
SLIDE 41

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Benoît Charlas, Grenoble

Hydride metal powders in hydrogen storage tanks — swelling & shrinking due to chemical reactions with hydrogen, creating mechanical effects.

slide-42
SLIDE 42

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Sergei Dorofeenko, Moscow

Coupling Computational Flow Dynamics (CFD) and DEM — OpenFOAM and Yade.

slide-43
SLIDE 43

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Anton Gladky, Freiberg

Mineral processing — analyzing rock destruction in the machine.

slide-44
SLIDE 44

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Anton Gladky, Freiberg

Mineral processing — analyzing rock destruction in the machine.

slide-45
SLIDE 45

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Alsidqi Hasan, Grenoble

Modeling snow grains based on CT scans, as polyhedra which can deform along crystallographic planes.

slide-46
SLIDE 46

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Franck Lominé, Nantes

Interaction between DEM-modeled solid and Lattice Boltzmann Method (LBM) modeled fluid. (Started by Luc Scholtès)

slide-47
SLIDE 47

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Chiara Modenese + Boon Chiaweng, Oxford

Lunar soil mechanics (started recently)

slide-48
SLIDE 48

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Luc Scholtès, Brisbane

Fractured rock mass with smooth contact discontinuities; discontinuities can be imported from Discrete Fracture Network Modelers.

slide-49
SLIDE 49

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Luc Scholtès, Brisbane

Fractured rock mass with smooth contact discontinuities; discontinuities can be imported from Discrete Fracture Network Modelers.

slide-50
SLIDE 50

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Václav Šmilauer, Prague/Grenoble

Particle model of concrete, based on continuous formulation (plasticity, rate-dependence, damage).

slide-51
SLIDE 51

Cohesive particle model & Yade Václav Šmilauer DEM CPM

Overview Stresses Calibration

Yade

Introduction Simulation Code Functionality

Yade- powered projects

Past Present

Thanks for attention

Got questions

?