MindlinDeresiewitz Contact Law Issue
Hello!
I am trying to compare behavior of MindlinDeresiewitz contact model with HertzMindlin's.
I was able to successfully run HertzMindlin contact law with no issues. However, when applying "Law2_ScGeom_
Below is the script to run and test the two contact models... I kindly ask you to comment and uncomment the Law2 functors to see the difference between the two contact models. It will automatically show the pre-sliding behavior when HertzMindlin constitutive law is used while no results can be seen when you activate the MindlinDeresiewitz law:
#######
# Script for validating the MindlinDeresiewitz contact model
# Simulating a sliding sphere with known coefficient of friction
# The script is used to evaluate the instantaneous compliances and dependence on both the current and previous state loading sequences
from yade import plot
import numpy as np
#######
### Section to define the thrust loading function
cyc = 10000 # number of cycles with constant force application (sufficiently large to reach steady state)
step_inc = 20 # amount of force increment [N]
Ftmax = 280 # maximum tangential force to reach during loading phase[N]
Ftmin = 200 # minimum tangential force to reach during unloading phase [N]
N = (Ftmax-
Ft = np.zeros(
for i in range(0,len(Ft)): # loop to define the loading phase
Ft[i] = step_inc * np.floor(i/cyc)
Ft = np.append(Ft, np.flip(
Ft = np.append(Ft, np.flip(
# Note: the maximum thrust force is below the maximum static friction that causes the body to accelerate
#######
nu1 = 0.3 # Poisson's ratio of the first material (infinite wall)
nu2 = 0.3 # Poisson's ratio of the second material (sphere)
E1 = 2.13e11 # Young's Modulus (Pa) of the first material (infinite wall)
E2 = 2.13e11 # Young's Modulus (Pa) of the second material (sphere)
mu = 0.3 # coeffcient of static/dynamic friction [-]
Rad1 = 0.001 # defining radius of the sphere [m]
Fn = 1e3 # defining the constant normal force [N]
targetiter = len(Ft) # target iteration before quiting the simulation
Mat1 = O.materials.
Mat2 = O.materials.
# Bodies to add in the simulation (wall and sphere)
O.bodies.append(
[
# add an infinite wall to the assembly (with z-axis being its normal)
# add a sphere tagent to the constructed wall
]
)
O.engines = [
ForceResett
InsertionSo
Interaction
),
]
O.bodies[
O.engines += [ForceEngine()]
O.dt = utils.PWaveTime
FrictionForce, SphereDisp, data = [], [], [] # preserving memory for variables to be parsed
plot.plots = {'displacement': ('Ff',)}
plot.plot()
O.stopAtIter = targetiter
O.run()
# user-defined function to apply external loads on the free sphere
def loading_fun():
# user-defined function to track values of interest
def addPlotData():
Ff = -1*O.interactio
)
print (O.engines[
# user-defined function to parse data and save in tab-delimited txt file (postprocessing)
def PARSE():
global FrictionForce # updating variable to global kind to allow storage
global SphereDisp # updating variable to global kind to allow storage
global data # updating variable to global kind to allow storage
SphereDisp = np.append(
data = np.transpose(
def SAVING():
comment = '''The following results are for a sphere with %s mm radius being pressed against an elastic half-space under constant normal load...
Sphere Material Properties: Young's Modulus = %s GPa, Poisson's ratio = %s
Half-space Material Properties: Young's Modulus = %s GPa, Poisson's ratio = %s
Coefficient of static friction = %s
Frictional Force [N]\tDisplaceme
#######
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 Malek Jaran for more information if necessary.