Functions in FEM-DEM
Hi,
I'm trying to model a soil-wheel interaction using FEM-DEM. The upper part of my model is DEM clumps which are then are coupled (volume coupling) from the bottom to a FEM mesh.
Here I used a spherical transition zone and avoided clumps coupling but am also wondering if clump coupling is also supported.
The motions of the facet wheel consist of:
1- Penetration in Y direction up to a certain depth (in Y direction)
2- Rotation in the longitudinal direction using a sliding ratio (in Z direction)
If I model the same problem with pure DEM particles, I define a CombinedKinemat
Unfortunately, when I use FEM-DEM coupling, the functions in YADE model are not recognized and this excessively limits my options for modeling different motions.
Noteworthy that I need to use PyRunner to update the zero point of the wheel to disable/enable my engine's components.
The basic question is this:
Do functions literally work in FEM-DEM coupling?
If yes do I need to adjust something scripts other than the YADE mode?
Here is my scrip with non-functional functions
The geometry is missing but I only need to know if something is wrong with my functions declaration.
#######
import math
from math import sqrt
from libyade import yade
from yade import *
from yade import pack, plot
import numpy
from pyquaternion import Quaternion
from yade import pack, export, Vector3
from yade import ymport
import sys
import os
import os.path
import IPython
#######
### DEFINING VARIABLES AND MATERIAL PARAMETERS ###
#######
deposFricDegree = 28.5 # INITIAL CONTACT FRICTION FOR SAMPLE PREPARATION
normalDamp=0.4 # NUMERICAL DAMPING
shearDamp=0.4
youngSoil=0.7e8# CONTACT STIFFNESS FOR SOIL
youngEO=210e9 # CONTACT STIFFNESS FOR EXTERNAL OBJECTS
poissonSoil=0.3 # POISSION'S RATIO FOR SOIL
poissionEO=0.25 # POISSION'S RATIO FOR EXTERNAL OBJECTS
densSoil=2650 # DENSITY FOR SOIL
densEO=500 # DENSITY FOR EXTERNAL OBJECTS
numDamp=0.4
IniDistanceBlad
HeightofBlade=0.003
WidthofBlade=0.002
ThicknessofBlad
InitialPenetera
InitialDistance
Horizentalveloc
Penetrationvelo
SoilId=
O.materials.
EOId=FrictMat(
O.materials.
#O.bodies.
#for b in O.bodies:
# b.state.blockedDOFs = 'zXY'
radius=8.e-5
XcenterofContainer = 0.0025
YcenterofContainer = 0.0054383384
minY=0.00241406
ZcenterofContainer = 10.0e-3
Container=
O.bodies.
ymport.
O.bodies.
minX=min(
maxX=max(
minY=min(
maxY=max(
minZ=min(
maxZ=max(
print ("minX:
## CREATE WALLS AROUND THE PACKING
# radius=8e-5
# mn,mx=Vector3(
# walls=yade.
# wallIds=
# O.bodies.
# O.bodies.
XcenterofBlade = 0.0025
YcenterofBlade = maxY+(HeightofB
ZcenterofBlade = minZ+IniDistanc
Blade=yade.
O.bodies.
idsr = [w.id for w in Blade]
facets = [b for b in O.bodies if isinstance(
#######
### DEFINING ENGINES ###
#######
gravity=(0,-9.81,0)
O.engines = [
ForceResetter(),
InsertionSort
InteractionLoop(
[Ig2_
[Ip2_
[Law2_
CombinedKinem
RotationEngin
PyRunner(
NewtonIntegra
]
O.dt = 1e-7
O.step()
transEngine, rotEngine = combEngine.comb[0], combEngine.comb[1]
def WheelPenetration():
transEngine.
rotEngine.
print(
if (rotEngine.
print("Wheel penetrated and is starting to rotate")
checker.
def WheelRolling():
transEngine.
transEngine.
rotEngine.
rotEngine.
print(
if rotEngine.
O.pause()
def vtkExport(i):
from yade import export
name = '/tmp/vol1_yade'
export.
export.
Question information
- Language:
- English Edit question
- Status:
- Answered
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Last query:
- Last reply:
Can you help with this problem?
Provide an answer of your own, or ask Nima Goudarzi for more information if necessary.