← Back to team overview

yade-users team mailing list archive

Re: [Question #406523]: Cylinders and law2_ScGeom_ViscElPhys_Basic

 

Question #406523 on Yade changed:
https://answers.launchpad.net/yade/+question/406523

    Status: Answered => Open

Raphaël Maurin is still having a problem:
Hi,

Taking all that together, I built a minimal script of a particle rebounding on a fixed cylinder but I still have some troubles. 
Even when applying viscElMat to the cylinder, it seems that it can be only FrictMat. Indeed, the following script crash with the error message:
"FATAL /build/yadedaily-2016.06a-24-0557faf~xenial/pkg/common/InteractionLoop.cpp:143 action: None of given Law2 functors can handle interaction #0+1, types geom:ScGeom=1 and phys:FrictPhys=3 (LawDispatcher::getFunctor2D returned empty functor)
QObject::~QObject: Timers cannot be stopped from another thread
Erreur de segmentation (core dumped)"

from yade.gridpfacet import *
O.materials.append(ViscElMat(en=0.5, et=0., young=1e7, poisson=0.5, density=2500, frictionAngle=0.4, label='Mat'))  
cylinder(begin = (0,0,0),end =(0,10,0),radius = 1,fixed = True,color = (0,0,1),intMaterial = 'Mat',extMaterial = 'Mat')
O.bodies.append(sphere(center = (0,5,5),radius = 1,material = 'Mat'))
O.engines = [
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_GridConnection_Aabb()]),
	InteractionLoop(
   	[Ig2_Sphere_Sphere_ScGeom(),Ig2_Sphere_GridConnection_ScGridCoGeom(),Ig2_GridNode_GridNode_GridNodeGeom6D()],
   	[Ip2_ViscElMat_ViscElMat_ViscElPhys()],
   	[Law2_ScGeom_ViscElPhys_Basic()],
	),			
	NewtonIntegrator(damping=0., gravity = (0,0,-9.81))
	]
O.saveTmp()
O.run()
O.dt = 1e-6

To take that into account, I add the Ip2_FrictMat_FrictMat_FrictPhys() and Law2_ScGeom_FrictPhys_CundallStrack(), and the simulation do not crash anymore. However, it does not take into account the ViscElMat, neither for the interaction between the particle and the cylinder, nor for the interactions between particles. (This can be well seen by adding the following two lines to the beginning of the code: 
O.bodies.append(sphere(center = (5,5,5),radius = 1,material = 'Mat'))
O.bodies.append(sphere(center = (5,5,0),radius = 1,material = 'Mat',fixed = True))

I think that either it is necessary to modify the generation of the
cylinder to allow for the cylinder to be ViscElMat, or it is necessary
to make a Ip2_ViscElMat_FrictMat_ViscElPhys(), to solve the problem.

Is that right ? Any other ideas if this could be fixed another way ? How
complicated are the two solutions ?

Thanks in advance,

Raphael

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.