yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #25095
Re: [Question #695558]: Dynamics of pfacet object does not appear to be correct
Question #695558 on Yade changed:
https://answers.launchpad.net/yade/+question/695558
Rohit John gave more information on the question:
Dear Klaus Thoeni,
I was playing around with the pfacet and I found a discrepancy in mass
of the nodes in a pfacet. I calculated the mass of the nodes using the
pfacet radius, the density of the material. The mass observed
(O.bodies[id].state.mass) and mass I calculated is not equal. Moreover,
changing the size of the pfacet changed the mass and the mass is not
equally distributed to the nodes. [1] says that "The mass of the PFacet
is equally lumped into the 3 nodes." so I thought the mass should be
equal for all nodes.
[1] Effeindzourou, A., Thoeni, K., Chareyre, B., & Giacomini, A.
(2015). A general method for modelling deformable structures in DEM.
Proceedings of the 4th International Conference on Particle-Based
Methods - Fundamentals and Applications, PARTICLES 2015, October 2018,
744–754.
Kind regards,
Rohit John
Please find the code for this
# -----------------------------------------------------------------------------------------------------------
# encoding: utf-8
from yade import qt
from yade.gridpfacet import *
###########################
##### ENGINES #####
###########################
O.engines=[
ForceResetter(),
InsertionSortCollider([
Bo1_Sphere_Aabb(),
Bo1_Wall_Aabb(),
Bo1_PFacet_Aabb(),
],sortThenCollide=True),
InteractionLoop(
[
Ig2_GridNode_GridNode_GridNodeGeom6D(),
Ig2_Sphere_PFacet_ScGridCoGeom(),
Ig2_Wall_PFacet_ScGeom(),
Ig2_Wall_Sphere_ScGeom()
],
[
Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=False),
Ip2_FrictMat_FrictMat_FrictPhys()],
[
Law2_ScGeom6D_CohFrictPhys_CohesionMoment(),
Law2_ScGeom_FrictPhys_CundallStrack(),
Law2_ScGridCoGeom_FrictPhys_CundallStrack(),
Law2_GridCoGridCoGeom_FrictPhys_CundallStrack()
]),
GlobalStiffnessTimeStepper(timestepSafetyCoefficient=0.8,label='ts'),
NewtonIntegrator(gravity=(0,-9.81,0),damping=0.1,label='newton')
]
young = 1e9
density = 1e3
poisson = 0.3
friction= 30
O.materials.append(
CohFrictMat(
young=young,
poisson=poisson,
density=density,
frictionAngle=radians(friction),
normalCohesion=3e7,
shearCohesion=3e7,
momentRotationLaw=True,
label='gridNodeMat'
))
O.materials.append(
FrictMat(
young=young,
poisson=poisson,
density=density,
frictionAngle=radians(friction),
label='gridConnectionMat'
))
###################################
##### PFacet creators #####
###################################
fixed = False
color=[255./255.,102./255.,0./255.]
nodesIds = []
cylIds = []
pfIds = []
#position of the node in the middle
r = 0.05
## Option 2: pfacetCreator1(vertices) -> based on 3 vertices
scale = 2
v1=Vector3(2, 0, 0) * scale
v2=Vector3(3, 0, 0) * scale
v3=Vector3(2.5, 2, 0) * scale
vertices=[v1,v2,v3]
pfacetCreator1(
vertices,
r,
nodesIds=nodesIds,
cylIds=cylIds,
pfIds=pfIds,
wire=False,
color=color,
fixed=fixed,
materialNodes='gridNodeMat',
material='gridConnectionMat')
print('Mass of node 0: ', O.bodies[nodesIds[0]].state.mass)
print('Mass of node 1: ', O.bodies[nodesIds[1]].state.mass)
print('Mass of node 2: ', O.bodies[nodesIds[2]].state.mass)
print('Calculated Mass: ', 4.0/3.0 * pi * r**3 * density)
#####################
##### Wall ###
#####################
O.bodies.append(utils.wall(position=-1,sense=0,
axis=1,color=Vector3(1,0,0),material='gridConnectionMat'))
qt.View()
O.saveTmp()
--
You received this question notification because your team yade-users is
an answer contact for Yade.