yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #29977
[Question #707869]: Problem with Cohesive Frictional Contact law
New question #707869 on Yade:
https://answers.launchpad.net/yade/+question/707869
Hi,
I've problem with Cohesive Frictional Contact law. I'm trying to run a simulation but I receive:
<FATAL ERROR> InteractionLoop:178 virtual void yade::InteractionLoop::action(): None of given Law2 functors can handle interaction #23+24, types geom:ScGeom=1 and phys:CohFrictPhys=6 (LawDispatcher::getFunctor2D returned empty functor)
Does the problem with my script or with something else?
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import division
from __future__ import print_function
import math
from future import standard_library
standard_library.install_aliases()
from yade import plot, pack, timing, qt, export
import time, sys, os, copy
import numpy as np
import gts
# default parameters or from table
readParamsFromTable(
noTableOk=True, # unknownOk=True,
young=70e9,
poisson=0.3,
density=2700,
frictionAngle=radians(30),
normalCohesion=300e6,
shearCohesion=300e6/sqrt(3),
intRadius=1.5,
damping=.4,
sphereRadius=1e-3,
length=100e-3,
width=50e-3,
thickness=4e-3
)
from yade.params.table import *
if 'description' in list(O.tags.keys()): O.tags['id'] = O.tags['id'] + O.tags['description']
aluminiumId = O.materials.append(
CohFrictMat(
young=young,
poisson=poisson,
density=density,
frictionAngle=frictionAngle,
normalCohesion=normalCohesion,
shearCohesion=shearCohesion,
momentRotationLaw=True
)
)
r = sphereRadius
partI=pack.inAlignedBox((0, 0, -thickness/2-r/2), (width+r, length, thickness/2+r/2))
partII=pack.inAlignedBox((width, 0, -thickness/2-r/2), (length+r, width, thickness/2+r/2))
sample = partI|partII
O.bodies.append(pack.regularHexa(sample,radius=r,gap=0.))
load = []
for b in O.bodies:
for b in O.bodies:
if b.state.pos[1] > (length-3*r): # support
b.state.blockedDOFs = 'xyzXYZ'
b.shape.color = (0, 1, 1)
elif b.state.pos[0] > (length-2*r): # load
load.append(b.id)
b.state.blockedDOFs = 'z'
b.shape.color = (0, 1, 1)
else:
b.shape.color = (0, 0, 1)
b.state.blockedDOFs = 'z'
O.dt = PWaveTimeStep()*1e-1
O.engines = [
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intRadius)]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intRadius)],
[Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True, setCohesionOnNewContacts=True)],
[Law2_ScGeom6D_CohFrictPhys_CohesionMoment()],
),
NewtonIntegrator(damping=damping),
PyRunner(iterPeriod=1, command='updateParameters()'),
PyRunner(command='addPlotData()', iterPeriod=1),
#PyRunner(iterPeriod=100, command='recordVTK()')
]
O.step()
print(len(O.interactions))
def updateParameters():
for i in range(len(load)):
O.bodies[load[i]].state.vel = Vector3(-100e0, 0, 0)
def addPlotData():
for b in O.bodies:
b.shape.color = scalarOnColorScale(b.state.stress[0, 0], -300e6, 300e6)
def recordVTK():
txtfilename = 'L_shape/L_test' + str(O.iter) + '.txt'
vtkfilename = 'L_shape/L_test' + str(O.iter) + '.vtk'
export.textExt(txtfilename, format='x_y_z_r_attrs', attrs=['b.state.oldTemp',
'b.state.stress[0,0]','b.state.stress[0,1]','b.state.stress[0,2]',
'b.state.stress[1,1]','b.state.stress[1,2]','b.state.stress[2,2]','O.time'],
comment='temperature, S_11, S_12, S_13, S_22, S_23, S_33, Time')
export.text2vtk(txtfilename, vtkfilename)
qt.View()
#plot.plots={'eps':('sigma')}
#plot.plot()
#O.run()
Kind regards,
Przemek
--
You received this question notification because your team yade-users is
an answer contact for Yade.