yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #05996
Re: [Bug 666246] Re: periodic boundary don't work with ViscEl classes
Hi, Bruno.
>
> For the facet, couldn't it be something like :
>
> const Vector3r c2x = (geom.contactPoint - de2.pos + shift2) ?
You are right, of couse.
But how can I get shift2 in my Law* engine?
What is prefered path?
May be to use HertzMindlin.cpp:181 string:
Vector3r shift2=scene->isPeriodic ?
Vector3r(scene->cell->Hsize*contact->cellDist.cast<Real>()) :
Vector3r::Zero();
Or to use precomputed shearIncrement from ScGeom?
But I need incidentVelocity too, but in ScGeom it is not cashed...
>
> This is what would happen if the shear increment/velocity used in the
> constitutive law were defined using ScGeom::getShear()/getIncidentVel(),
> and if values were precomputed with avoidRatcheting=false.
>
> I see that, currently in Ig2_Facet_Sphere, avoidRatcheting is true (my
> bad), I recommend turning it false :
> Ig2_Facet_Sphere_ScGeom.cpp:110 :
> scm->precompute(state1,state2,scene,c,normal,isNew,shift2,*_true_*);
Why is avoidGranularRatcheting hard coded here?
Should I turn it false and commit?
ps. I see what Yade's code is very complicated now and I need to learn
it again...
--
Best regards,
Sergei D.
--
periodic boundary don't work with ViscEl classes
https://bugs.launchpad.net/bugs/666246
You received this bug notification because you are a member of Yade
developers, which is subscribed to Yade.
Status in Yet Another Dynamic Engine: Fix Committed
Bug description:
Periodic boundary don't work with Ig2_Facet_Sphere_ScGeom and Ig2_Sphere_Sphere_ScGeom functors.
#=============BEGIN SCRIPT TEST PERIODIC WITH Ig2_Sphere_Sphere_ScGeom==========
# -*- coding: utf-8
from yade import utils
sphereRadius=0.1
tc=0.001# collision time
en=0.3 # normal restitution coefficient
es=0.3 # tangential restitution coefficient
density=2700
frictionAngle=radians(35)#
params=utils.getViscoelasticFromSpheresInteraction(tc,en,es)
sphereMat=O.materials.append(ViscElMat(density=density,frictionAngle=frictionAngle,**params))
# Spheres
sphId=O.bodies.append([
utils.sphere( (i*0.2+0.1,0.5,0.2), 0.1, material=sphereMat) for i in range(5)
])
O.bodies[sphId[-1]].state.vel=(0.5,0.5,0)
## Engines
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom()],
[Ip2_ViscElMat_ViscElMat_ViscElPhys()],
[Law2_ScGeom_ViscElPhys_Basic()],
),
NewtonIntegrator(damping=0),
]
O.periodic=True
O.cell.refSize=Vector3(1,1,1)
O.dt=.01*tc
O.saveTmp()
#==========================END======================
#=============BEGIN SCRIPT TEST PERIODIC WITH Ig2_Facet_Sphere_ScGeom==========
# -*- coding: utf-8
from yade import utils
sphereRadius=0.1
tc=0.001# collision time
en=0.3 # normal restitution coefficient
es=0.3 # tangential restitution coefficient
density=2700
frictionAngle=radians(35)#
params=utils.getViscoelasticFromSpheresInteraction(tc,en,es)
facetMat=O.materials.append(ViscElMat(frictionAngle=frictionAngle,**params))
sphereMat=O.materials.append(ViscElMat(density=density,frictionAngle=frictionAngle,**params))
floor
n=5.
s=1./n
for i in range(0,n):
for j in range(0,n):
O.bodies.append([
utils.facet( [(i*s,j*s,0.1),(i*s,(j+1)*s,0.1),((i+1)*s,(j+1)*s,0.1)],material=facetMat),
utils.facet( [(i*s,j*s,0.1),((i+1)*s,j*s,0.1),((i+1)*s,(j+1)*s,0.1)],material=facetMat),
])
# Spheres
sphId=O.bodies.append([
utils.sphere( (0.5,0.5,0.2), 0.1, material=sphereMat),
])
O.bodies[sphId[-1]].state.vel=(0.5,0,0)
## Engines
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
InteractionLoop(
[Ig2_Facet_Sphere_ScGeom()],
[Ip2_ViscElMat_ViscElMat_ViscElPhys()],
[Law2_ScGeom_ViscElPhys_Basic()],
),
GravityEngine(gravity=[0,0,-9.81]),
NewtonIntegrator(damping=0),
]
O.periodic=True
O.cell.refSize=Vector3(1,1,1)
O.dt=.01*tc
O.saveTmp()
#==========================END======================
Follow ups
References