New question #684762 on Yade:
https://answers.launchpad.net/yade/+question/684762
I am trying to create a weld type between two bars. These bars would be the
cylinders. Each cylinder is composed of a different material and the weld is
another cylinder with a weaker material. When I try to move one of the bars to
test the solder the connection disappears. Is it possible to make this type
connection? It would be like having two cylinders in different planes connected
by each other and each composed of a different material. This is my script:
# encoding: utf-8
"An example showing how to create two cylinders which are interacting."
from yade.gridpfacet import *
from yade import plot, bodiesHandling, pack, ymport, geom
#### define parameters for the net
# wire diameter
d = 0.01
# particle radius
radius = d/2
# define piecewise lineare stress-strain curve
strainStressValues=[(0.00019230769,9e7),(0.032,4.28e8),(0.036,4.61e8),(0.045,4.95e8),(0.06,5.05e8),(0.075,5.15e8),(0.09,5.20E+08),(0.12,5.36E+08),(0.14,5.41E+08),(0.16,5.46E+08),(0.21,5.57E+08),(0.28,5.65E+08),(0.35,5.67E+08)]
particleVolume = 4./3.*pow(radius,3)*pi
particleMass = 3.9/1000.
density = particleMass/particleVolume
young = 2e11
poisson = 0.3
#### Parameter ####
L=1. # length of the cylinder element
#r=0.01 # radius of the cylinder element
r=radius
phi=30. # friction angle
E=1e13 # Young's modulus
n=5 # number of nodes used to generate the beam
#### Creat materials ####
O.materials.append( CohFrictMat(
young=E,poisson=0.3,density=1000,frictionAngle=radians(phi),normalCohesion=1e40,shearCohesion=1e40,
momentRotationLaw=True,label='cMat' ) ) # material to create the
gridConnections
O.materials.append( FrictMat(
young=E,poisson=0.3,density=1000000,frictionAngle=radians(phi),label='fMat' ) )
# material for general interactions
O.materials.append(
CohFrictMat(young=E,poisson=0.3,density=1100,frictionAngle=radians(10),normalCohesion=1e30,shearCohesion=1e30,
momentRotationLaw=True,label='wMat' ) ) # material to create the
gridConnections
O.materials.append( WireMat(
young=young,poisson=poisson,frictionAngle=radians(30),density=density,isDoubleTwist=False,diameter=d,strainStressValues=strainStressValues,label='wire'
) )
#### Engines ####
Factor=1.5 # wire
O.engines=[
ForceResetter(),
InsertionSortCollider([
Bo1_Sphere_Aabb(aabbEnlargeFactor=Factor, label="aabb"),
Bo1_Box_Aabb(),
Bo1_Sphere_Aabb(),
Bo1_GridConnection_Aabb(),
]),
InteractionLoop([
Ig2_Sphere_Sphere_ScGeom(),
Ig2_Box_Sphere_ScGeom(),
Ig2_GridNode_GridNode_GridNodeGeom6D(),
Ig2_Sphere_GridConnection_ScGridCoGeom(),
Ig2_GridConnection_GridConnection_GridCoGridCoGeom(),
Ig2_Sphere_Sphere_ScGeom6D(interactionDetectionFactor=Factor,label="Ig2"),
],
[
Ip2_WireMat_WireMat_WirePhys(),
#Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(label='gridinteraction'),
Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=False),
# internal cylinder physics
Ip2_FrictMat_FrictMat_FrictPhys() # physics for external
interactions, i.e., cylinder-cylinder, sphere-sphere, cylinder-sphere
],
[
Law2_ScGeom_FrictPhys_CundallStrack(), # contact law for
sphere-sphere
Law2_ScGridCoGeom_FrictPhys_CundallStrack(), # contact law
for cylinder-sphere
Law2_ScGeom6D_CohFrictPhys_CohesionMoment(), # contact law
for "internal" cylinder forces
Law2_ScGeom_WirePhys_WirePM(), # manter o
contato entre os cilindros wire
Law2_GridCoGridCoGeom_FrictPhys_CundallStrack() # contact law for
cylinder-cylinder interaction
]
),
#GlobalStiffnessTimeStepper(timestepSafetyCoefficient=0.1,label='ts'),
NewtonIntegrator(gravity=(0,0,0),damping=0.5,label='newton'),
PyRunner(command='main()',iterPeriod=20)
]
#### Create bars ####
#### simulation
## to define interaction range for which cohesive links will be created
bar1=[]
bar2=[]
bar3=[]
sph1=[]
for i in range(0,n):
bar1.append( [i*L/(n-1),0,0] )
bar2.append( [L/2,(L/2)-i*L/(n-1),3.1*r] )
bar3.append( [i*L/(n-1),0.4,L] )
sph1.append( [i*L/(n-1),0.4,2*L] )
#### Create cylinder connections ####
nodesIds1=[]
cylIds1=[]
nodesIds2=[]
cylIds2=[]
nodesIds3=[]
cylIds3=[]
nodesIds_c=[]
cylIds_c=[]
#bloc=O.bodies.append(sphere(sph1[2],radius=10*r,wire=False,highlight=False,color=[1,1,0],material='fMat'))
for i in range(0,n):
nodesIds1.append(
O.bodies.append(gridNode(bar1[i],r,wire=False,fixed=False, material='cMat',
color=[1,0,0])) )
for i in range(0,n):
nodesIds2.append(
O.bodies.append(gridNode(bar2[i],r,wire=False,fixed=False, material='wire',
color=[1,1,1])) )
for i in range(0,len(nodesIds1)-1):
O.bodies.append(
gridConnection(nodesIds1[i],nodesIds1[i+1],r,color=[1,0,0], material='cMat') )
for i in range(0,len(nodesIds2)-1):
O.bodies.append(
gridConnection(nodesIds2[i],nodesIds2[i+1],r,color=[1,1,1], material='wire') )
gridNode(bar1[2],r,wire=False,fixed=False, material='wMat', color=[1,1,0])
gridNode(bar2[2],r,wire=False,fixed=False, material='wMat', color=[1,1,0])
O.bodies.append(gridConnection(nodesIds1[2],nodesIds2[2],r,color=[1,1,0],material='wMat')
)
for i in nodesIds1:
O.bodies[i].state.blockedDOFs='xyzXYZ'
def main():
O.bodies[nodesIds2[0]].state.blockedDOFs='xyzXYZ'
O.bodies[nodesIds2[0]].state.vel[2]=0.1
O.interactions.eraseNonReal()
#### For viewing ####
from yade import qt
qt.View()
Gl1_Sphere.stripes=True
#### Set a time step ####
#O.dt=1e-06
O.dt=utils.PWaveTimeStep()
#### Allows to reload the simulation ####
O.saveTmp()
--
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 : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help : https://help.launchpad.net/ListHelp