Re: [Yade-users] [Question #684944]: After restricting DOFs, restricted movement still occurs

2019-10-28 Thread Launchpad Janitor
Question #684944 on Yade changed:
https://answers.launchpad.net/yade/+question/684944

Status: Needs information => Expired

Launchpad Janitor expired the question:
This question was expired because it remained in the 'Needs information'
state without activity for the last 15 days.

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

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #684944]: After restricting DOFs, restricted movement still occurs

2019-10-12 Thread Jan Stránský
Question #684944 on Yade changed:
https://answers.launchpad.net/yade/+question/684944

Status: Open => Needs information

Jan Stránský requested more information:
No idea..
What version of Yade and what operating system are you using?
Is the code you have posted exactly the same to that giving the error? Could 
you please post a new code with setting O.dt and something like 
O.run(5,True) and than print the angVel so that we can really test exactly 
the same code?
thanks
Jan

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

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #684944]: After restricting DOFs, restricted movement still occurs

2019-10-12 Thread Xue
Question #684944 on Yade changed:
https://answers.launchpad.net/yade/+question/684944

Status: Needs information => Open

Xue gave more information on the question:
Hello, Jan. 
I checked the angular velocity of the plate according to your code. The result 
shows that the angular velocity of the plate is not zero. 
But when I wrote  O. bodies [Lastnum]. state. blocked DOFs ='xyXYZ'  outside of 
def Compact (), I found that the freedom of plate was limited successfully.
xue

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

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #684944]: After restricting DOFs, restricted movement still occurs

2019-10-11 Thread Jan Stránský
Question #684944 on Yade changed:
https://answers.launchpad.net/yade/+question/684944

Status: Open => Needs information

Jan Stránský requested more information:
What is the output or state.ori, angVel etc. as I posted above?
Is it possible that the rotation is some artifact of perspective projection or 
something like that?
cheers
Jan

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

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #684944]: After restricting DOFs, restricted movement still occurs

2019-10-11 Thread Xue
Question #684944 on Yade changed:
https://answers.launchpad.net/yade/+question/684944

Status: Needs information => Open

Xue gave more information on the question:
Hello Jan, thank you again for your patience! 
As you said, I saw the rotation of the plate in the 3D View of the 
qt.Controller(), which happened at about 0.39 of the height of the plate.

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

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #684944]: After restricting DOFs, restricted movement still occurs

2019-10-11 Thread Jan Stránský
Question #684944 on Yade changed:
https://answers.launchpad.net/yade/+question/684944

Status: Open => Needs information

Jan Stránský requested more information:
Hello,
I have tried your code, but could not reproduce the problem
###
b = O.bodies[-1]
print b.state.angVel # always Vector3(0,0,0)
print b.state.angMom # always Vector3(0,0,0)
print b.state.ori # always Quaternion((1,0,0),0)
###
tells it does not rotate..

> the plate still rotates.

What does it mean / how do you know it? numerical evidence? visual evidence?
cheers
Jan

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

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #684944]: After restricting DOFs, restricted movement still occurs

2019-10-11 Thread Xue
Question #684944 on Yade changed:
https://answers.launchpad.net/yade/+question/684944

Status: Answered => Open

Xue is still having a problem:
Hello, Jan. 
Thank you very much for your answer and for your willingness to try my code. 
As you said, the ldpltheight starts with more than 0.5 (gravitational settling 
of particles), and there is no limit to the DOF. But when the ldpltheight < 
0.5, the plate is generated and then the particles are compressed under 500N 
load (as shown by a==1~2). At this stage, I limit the DOF of the plate other 
than z-axis translation (corresponding to a==3). But after a period of time, 
the plate still rotates, and that's my problem.
If you want to try my code, you can increase the time step to 5E-5.
Thanks again!!!

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

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #684944]: After restricting DOFs, restricted movement still occurs

2019-10-10 Thread Jan Stránský
Question #684944 on Yade changed:
https://answers.launchpad.net/yade/+question/684944

Status: Open => Answered

Jan Stránský proposed the following answer:
Hello,

> I limit the degree of freedom of the plate except for the z-axis
motion.

before posting a question, please try to verify these easily verifiable 
statements.
I have tried your code (with some debug prints in Compact function):
###
def Compact():
 global a
 print "a",a
 if a == 1:
  ldpltheight=max([b.state.pos[2]+b.shape.radius for b in O.bodies if 
isinstance(b.shape,Sphere)])
  print "ldpltheight",ldpltheight
  ...
###
ldpltheight stays 0.6964 for very long time. It is >0.5, so the function 
returns, leaving a=1 and the code does not reach the blockedDOFs setting..
So actually you do not limit the degree of freedom..

cheers
Jan

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

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


[Yade-users] [Question #684944]: After restricting DOFs, restricted movement still occurs

2019-10-10 Thread Xue
New question #684944 on Yade:
https://answers.launchpad.net/yade/+question/684944

Hello, everyone!
  I want to compact the particles under a plate by applying a vertical force on 
the plate. For this purpose, I limit the degree of freedom of the plate except 
for the z-axis motion. But in the calculation, the plate still rotates.
  Here's my code:
###
from yade import pack,qt,plot,utils,polyhedra_utils,ymport,export,pack,timing
from yade import *
import numpy
from pprint import pprint
import random
from random import uniform
from random import randint
import math
from math import *

gravel = PolyhedraMat()
gravel.density = 2600 #kg/m^3 
gravel.young = 5.5E7 #Pa 1E7
gravel.poisson = 0.21 # 2/1E7
gravel.frictionAngle = 0.65 #rad
O.materials.append(gravel)

steel = PolyhedraMat()
steel.density = 2600 #kg/m^3 
steel.young = 5.5E7 #inital steel was 
steel.poisson = gravel.poisson
steel.frictionAngle = 0.3 #rad
O.materials.append(steel)

sphereballast = FrictMat()
sphereballast.density = 2600
sphereballast.young = 5.5E7
sphereballast.possion = 0.21
sphereballast.frictionAngle = 0.65 #rad
O.materials.append(sphereballast)



global a
a=1

O.bodies.append(geom.facetCylinder(center=(0.0,0.0,0.3),radius=0.15,height=0.6,orientation=Quaternion((0,0,1),0),segmentsNumber=24,wallMask=4,angleRange=(0.0,2*pi),closeGap=False,radiusTopInner=0.0,radiusBottomInner=0.0,material=steel))
O.bodies.append(geom.facetCylinder(center=(0.0,0.0,1.0),radius=0.150,height=0.8,orientation=Quaternion((0,0,1),0),segmentsNumber=12,wallMask=4,angleRange=(0.0,2*pi),closeGap=False,radiusTopInner=0.0,radiusBottomInner=0.0,material=steel))
#orientation=Quaternion((1,0,0),0)##Law2_ScGeom_FrictPhys_CundallStrack()


O.bodies.append(utils.wall((0,0,0),2,sense=0,material=steel))

psdSizes = [0.025,0.0355,0.045,0.056,0.065]
psdCumm = [0.0,0.15,0.35,0.7,0.97,1.0]
mn = Vector3(-0.11,-0.11,0)
mx = Vector3(0.11,0.11,3.7)
sp=pack.SpherePack()
sp.makeCloud(minCorner=(-0.16,-0.16,0),maxCorner=(0.16,0.16,0.8),porosity=0.38,psdSizes=[0.025,0.0355,0.045,0.056,0.065],psdCumm=[0.15,0.35,0.7,0.97,1.0])
pred=pack.inCylinder((0,0,0),(0,0,0.7),radius=0.15)
sp2 = pack.filterSpherePack(pred,sp,returnSpherePack=True)
sp2.toSimulation(material=sphereballast)

for b in O.bodies:
if isinstance(b.shape,Sphere):
if b.shape.radius < 0.01:
O.bodies.erase(b.id)



O.engines=[
ForceResetter(),

InsertionSortCollider([Bo1_Polyhedra_Aabb(),Bo1_Wall_Aabb(),Bo1_Facet_Aabb(),Bo1_Sphere_Aabb()]),
InteractionLoop(

[Ig2_Wall_Polyhedra_PolyhedraGeom(),Ig2_Polyhedra_Polyhedra_PolyhedraGeom(),Ig2_Facet_Polyhedra_PolyhedraGeom(),Ig2_Sphere_Sphere_ScGeom(),Ig2_Sphere_Polyhedra_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom()],

[Ip2_PolyhedraMat_PolyhedraMat_PolyhedraPhys(),Ip2_FrictMat_PolyhedraMat_FrictPhys(),Ip2_FrictMat_FrictMat_FrictPhys()],

[Law2_PolyhedraGeom_PolyhedraPhys_Volumetric(),Law2_ScGeom_FrictPhys_CundallStrack()],
   # contact law -- apply forces #Bo1_Cylinder_Aabb()
),
NewtonIntegrator(damping=0.3,gravity=(0,0,-9.8)),
PyRunner(command='cycle()',iterPeriod=300,label='step'),
PyRunner(command='Compact()',iterPeriod=1,label='compact'),
]

def cycle():
for b in O.bodies:
if isinstance(b.shape,Sphere):
if b.state.pos[0] < -0.3 or b.state.pos[0] > 0.3:
O.bodies.erase(b.id)
elif b.state.pos[1] < -0.3 or b.state.pos[1] > 0.3:
O.bodies.erase(b.id)
elif b.state.pos[2] < -0.1 or b.state.pos[2] > 4:
O.bodies.erase(b.id)
else:
pass
for b in O.bodies:
if isinstance(b.shape,Sphere):
b.state.vel=(0,0,0)
b.state.angVel=(0,0,0)
b.state.angMom=(0,0,0)

def Compact():
global a
if a == 1:
ldpltheight=max([b.state.pos[2]+b.shape.radius for b in 
O.bodies if isinstance(b.shape,Sphere)])
print  ("pos=%.5f"%(ldpltheight))
if ldpltheight > 0.5: return
ldpltheight=max([b.state.pos[2]+b.shape.radius for b in 
O.bodies if isinstance(b.shape,Sphere)])

ldplt=polyhedra_utils.polyhedra(steel,v=((-0.148,0,ldpltheight),(-0.073*sqrt(3),-0.073,ldpltheight),(-0.073,-0.073*sqrt(3),ldpltheight),(0,-0.148,ldpltheight),(0.073,-0.073*sqrt(3),ldpltheight),(0.073*sqrt(3),-0.073,ldpltheight),(0.148,0,ldpltheight),(0.073*sqrt(3),0.073,ldpltheight),(0.073,0.073*sqrt(3),ldpltheight),(0,0.148,ldpltheight),(-0.073,0.073*sqrt(3),ldpltheight),(-0.073*sqrt(3),0.073,ldpltheight),(-0.148,0,ldpltheight+0.02),(-0.073*sqrt(3),-0.073,ldpltheight+0.02),(-0.073,-0.073*sqrt(3),ldpltheight+0