# 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:
- Expired

- For:
- Yade Edit question

- Assignee:
- No assignee Edit question

- Last query:

- Last reply: