← Back to team overview

yade-users team mailing list archive

Re: [Question #269063]: Metallic plate tension

 

Question #269063 on Yade changed:
https://answers.launchpad.net/yade/+question/269063

    Status: Answered => Open

Alexander is still having a problem:
Hello Jan, I'm glad to see your answer.

Ok let's see consider the stress first.
 
At the previous picture i showed "magnitude" of stress (I can select such a mode in Paraview, but frankly i don't understand yet how it represents 3x3 matrix tensor http://i11.pixs.ru/storage/5/9/2/pic1JPG_5715109_18008592.jpg :)

Hm, I think the displacement of spheres belonging to KGHO  is constant
because of the minimal value is set to 0.
(http://i11.pixs.ru/storage/6/0/7/pic2JPG_9158907_18008607.jpg). You are
right, spheres of KGHO  fixed just along Y direction. Also it seems to
be a simple uniaxial loading, but as i mentioned in future i will
replace specimen with another plate which consists inclusions of
different metal (mo). Now i need to calibrate test that's why using
simple uniform plate with stiffer material.

Today i created simple tension test in Ansys with the steel plate, the
following picture shows stress distribution.
(http://i11.pixs.ru/storage/6/3/3/pic3JPG_3955405_18008633.jpg). I want
to see something like this in Yade, but after Young's modulus and
Poisson's ratio were changed, the results become even worst. The spheres
under constant force simply rip off the model.
(http://i11.pixs.ru/storage/6/4/2/pic5JPG_4026499_18008642.jpg , huh i
found how to show coordinate axis)

With you advise i'm proccessing  to cut my MWE example. Now i try to use
VTKExporter to save data but _builtin__.my_stresses doesn't work. That's
why i save just dicplacement, you can uncomment variant with
__builtin__.my_stresses . Pleace could you test it and said what's wrong
with _builtin__.my_stresses.

/////

import __builtin__
from yade import export

###################################################
# define materials and model configuration

E = 2e11 # Young's modulus of model
v = 0.3 # Poisson's ratio
p = 150e6 # initial stress value (positive - tension, negative - compression)
d = 7850 # density

e = 0.02 # loading rate (strain rate) (positive - tension, negative - compression)
r = 0.5 # spheres radius

# Enlarge interaction radius between spheres using "interaction_radius" parameter (for example in uniax.py this value is 1.5)
interaction_radius = 1.5

# define plate material, create "dense" packing by setting friction to zero initially
O.materials.append(CpmMat(young=E,
					      frictionAngle=0,
						  poisson=v,
						  density=d,
						  sigmaT=3.5e6,
						  epsCrackOnset=1e-4,
						  isoPrestress=0,
						  relDuctility=30,
						  label = 'mat'))
	
# represent plate like a set of regular monosized set of spheres 
# also set boundary conditions via predefined tensile force for spheres on ABCD and
# fixed spheres on KGHO
spheres=[]
for i in range(0, 16):
   for j in range(0, 16):
      for k in range(0, 2):
        id = O.bodies.append(sphere([i+0.5,j+0.5,k+0.5],material='mat',radius=r))
        spheres.append(O.bodies[id])
        if j == 15:
           O.forces.addF(id,(0,p,0),permanent=True) # Add force for all spheres connected to ABCD
        if j == 0:
           spheres[id].state.blockedDOFs='y' # Fixed all spheres connected to KGHO 		
		
      
###################################################
# define engines

# simulation loop 
O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=interaction_radius,label='bo1s')]),
 InteractionLoop(
	[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=interaction_radius,label='ig2ss')],
    [Ip2_CpmMat_CpmMat_CpmPhys()], 
    [Law2_ScGeom_CpmPhys_Cpm()] 
 ),
 CpmStateUpdater(realPeriod=1),
 NewtonIntegrator(damping=0.4)
]
	 
###################################################
# start simulation and compute strain and stress
   
# try to run script with qt graphical interface
try:
   yade.qt.Controller(), yade.qt.View()  
except:
   print 'Qt graphical interface is not avaliable'
   
# set the integration timestep to be 1/2 of the "critical" timestep
O.dt=.5*utils.PWaveTimeStep() 

# compute strain via tesselation wrapper.
TW=TesselationWrapper()

# store current positions before simulation
TW.setState(0)       

# run one single step
O.step()

# reset interaction radius to the default value
bo1s.aabbEnlargeFactor=1.0
ig2ss.interactionDetectionFactor=1.0

# run simulation
O.run(500,1) 

# store positions after simulation (deformed state)
TW.setState(1)  

# compute deformation for each body
TW.computeDeformations()  

# compute stress tensor for each body
stresses = bodyStressTensors() 

###################################################
# save data to vtk. file

__builtin__.my_stresses = stresses 
vtk = export.VTKExporter('result')
vtk.exportSpheres(what=[('radius','b.shape.radius'),('displacement','b.state.displ()')])
# with the command below script crashes!!!!
#vtk.exportSpheres(what=[('radius','b.shape.radius'),('displacement','b.state.displ()'),('stress','float (__builtin__.my_stresses[b.id])')])

////

So and the main question still the same, how can i simulate something
like in Ansys picture with Yade. You also can test file result.vtk in
Paraview with Glyph filter. I hope u will help me because i see u are
professional in this area :). I will read u article  but for me now to
make working example is also very important.


with regards, Alexander

-- 
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.


Follow ups

References