Contact sliding and rolling friction values different than assigned?
Hello,
I'm working off of a modified tutorial example. Code provided below for reference.
In summary:
- I am assigning a lower initial sliding and rolling friction during compaction, then bumping it up before shear.
- Initial rolling/sliding friction = 0.0
- Final rolling/sliding friction = radians(30) = 0.52359...
-Note the docs (help(O.
- If I inspect the phys instances of O.interactions at the end of my simulation, I generally see that:
- sliding friction = 0.577 = 33 deg
- rolling friction < 0.577 overall, but sometimes as small as 4 deg
- I would expect them all to report 0.52359.., however, it is clearly different.
Just want to understand what I might be missing here.
Cheers,
Kevin
truncated output for contact friction at end of test:
```
for i in O.interactions:
print(
0.5773502691896257 0.5773502691896257
0.5773502691896257 0.5773502691896257
0.5773502691896257 0.5773502691896257
0.5773502691896257 0.5773502691896257
0.04720909644502941 0.5773502691896257
0.5773502691896257 0.5773502691896257
0.0388487417993
0.5773502691896257 0.5773502691896257
0.04013287641764167 0.5773502691896257
0.5773502691896257 0.5773502691896257
0.5773502691896257 0.5773502691896257
0.03819576331427891 0.5773502691896257
0.04293328164040254 0.5773502691896257
0.04918282798624137 0.5773502691896257
0.03809146798509421 0.5773502691896257
...
```
working example code:
```
from __future__ import print_function
# generate loose packing
from yade import pack, qt, plot
sigmaIso = -1e5
initialFric = 0
finalFric = 30
## define materials
O.materials.
young=1e7, # Particle modulus [Pa]
poisson=.3, # Ks/Kn ratio
etaTwist=0, # Turn off twisting
))
O.periodic = True
sp = pack.SpherePack()
## uniform distribution
sp.makeCloud((0, 0, 0), (4, 4, 4), rMean=.1, rRelFuzz=.3, periodic=True)
# setup periodic boundary, insert the packing
sp.toSimulation
O.engines = [
# use adaptive stiffness-based timestepper
# set to True for domain decomp
),
# specify target values and whether they are strains or stresses
# type of servo-control
# wait until the unbalanced force goes below this value
# call this function when goal is reached and the packing is stable
),
]
def addPlotData():
plot.addData(
i=O.iter,
# save all available energy data
**O.energy
)
# enable energy tracking in the code
O.trackEnergy = True
# define what to plot
plot.plots = {
'i': ('unbalanced',),
'i ': ('sxx', 'syy', 'szz'),
' i': ('exx', 'eyy', 'ezz'),
# energy plot
' i ': (O.energy.keys, None, 'Etot'),
}
# show the plot
plot.plot()
def compactionFinis
## reassign friction values for shear
# for future contacts change material
O.materials[
O.materials[
# for existing contacts, set contact friction directly
for i in O.interactions:
i.
i.
# set the current cell configuration to be the reference one
O.cell.trsf = Matrix3.Identity
# change control type: keep constant confinement in x,y, 20% compression in z
triax.goal = (sigmaIso, sigmaIso, -.2)
triax.stressMask = 3
# allow faster deformation along x,y to better maintain stresses
triax.
# next time, call triaxFinished instead of compactionFinished
triax.doneHook = 'triaxFinished()'
# do not wait for stabilization before calling triaxFinished
triax.
def triaxFinished():
print('Finished')
O.pause()
```
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 Kevin Kuei for more information if necessary.