yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #29285
Re: [Question #706302]: How to move O.bodies.append(facet()) to a circle or complex trajectory
Question #706302 on Yade changed:
https://answers.launchpad.net/yade/+question/706302
Status: Answered => Solved
内山康太郎 confirmed that the question is solved:
Thank you very much.
I post the completed program (excerpt).
##############################################################################
from __future__ import print_function
from yade import pack,plot,polyhedra_utils,geom
from yade import export,qt
from yade.gridpfacet import *
import math
import numpy as np
import os
idsCyl2 = O.bodies.append(geom.facetCylinder((0, 0, 0.015), radius=.06,
height=.01, segmentsNumber=30, wallMask=5))
O.engines = [
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Box_Aabb()]),
InteractionLoop(
# interaction loop
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
[Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()],
[Law2_ScGeom6D_CohFrictPhys_CohesionMoment(always_use_moment_law=True),Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(),
##TranslationEngine(translationAxis=[0,0,1],velocity=-1,ids=idsCyl3),
TranslationEngine(ids=idsCyl2,label="translation"),
PyRunner(iterPeriod=1,command="setTranslation()"),
PyRunner(command='checkStress()', iterPeriod=10),
PyRunner(command='plotPlotData()',iterPeriod=1),
]
def setTranslation():
x = O.bodies[idsCyl2[0]].state.displ()[0]
y = O.bodies[idsCyl2[0]].state.displ()[1]
angle = atan2(y,x)
a = Vector3(-sin(angle),cos(angle),0)
v = 0.001
translation.translationAxis = a
translation.velocity = v
def checkStress():
cylDisplacement_x = O.bodies[idsCyl2[0]].state.displ()[0]
cylDisplacement_y = O.bodies[idsCyl2[0]].state.displ()[1]
plot.addData(
cylDisplacement_x=cylDisplacement_x,
cylDisplacement_y=cylDisplacement_y,
)
print('{:1.04f}'.format(cylDisplacement_x)," ", '{:1.04f}'.format(cylDisplacement_y))
O.dt=0.5*PWaveTimeStep()
def plotPlotData():
cylDisplacementx = O.bodies[idsCyl2[0]].state.displ()[0]
cylDisplacementy = O.bodies[idsCyl2[0]].state.displ()[1]
plot.addData(
i=O.iter,
cylDisplacementx=cylDisplacementx,
cylDisplacementy=cylDisplacementy,
)
plot.saveDataTxt('pipe_force.out',vars=('disp','force_x','force_y',
'Dz',
'cylDisplacementx','cylDisplacementx',
))
plot.plots={
'disp':('force_x','force_y'),
'i':('Dz'),
'cylDisplacementx':('cylDisplacementy',)
}
plot.plot()
--
You received this question notification because your team yade-users is
an answer contact for Yade.