← Back to team overview

yade-users team mailing list archive

Re: [Question #706083]: Consolidation method in Direct Shear Test test

 

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

Description changed to:
Dear All,

I'm in a lot of trouble

I am doing an analysis on a direct(simple) shear test.
I have created a program like below.

So I have one question. It's about consolidation.
I was able to generate shear , but not consolidation.
So is there a way to make it consolidation?


My idea was to apply a constant stress/force(50kN/m2,100KN/m2....) to the top plate, similar to the consolidation experiment.
However, just as I can create a plate or facet, I cannot push a plate or facet, with a specified force or stress.
Can you give me a program to apply a constant stress/force to the tabletop?
Thank you very much.

##########################################################
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

# load parameters from file if run in batch
# default values are used if not run from batch


# the "if 0:" block will be never executed, therefore the "else:" block will be
# to use cloud instead of regular packing, change to "if 1:" or something similar

frictangle = 0.436
density = 2400.0
young = 3e7
gravity = (0.0, 0.0, -9.81)
velocity_cyl=0.10


# create cloud of spheres and insert them into the simulation
# we give corners, mean radius, radius variation
	
###############################################
#Create sphere
###############################################

mat_sp = CohFrictMat(young = young, poisson = 0.35,frictionAngle=radians(frictangle), density=density)
O.materials.append(mat_sp)
	

pred=pack.inCylinder(centerBottom=(0,0,0),centerTop=(0,0,.02),radius=.06)

sp0=pack.randomDensePack(pred,spheresInCell=2000,radius=.002)
O.bodies.append(sp0)


###############################################
#Boundary creation
###############################################

idsCyl1 = O.bodies.append(geom.facetCylinder((0, 0, 0.005), radius=.06,
height=.01, segmentsNumber=30, wallMask=6))

idsCyl2 = O.bodies.append(geom.facetCylinder((0, 0, .015), radius=.06,
height=.01, segmentsNumber=30, wallMask=5))

#idsCyl3 = O.bodies.append(geom.facetCylinder((0, 0, .0225),
radius=0.10, height=.005, segmentsNumber=30, wallMask=2))


radius1 = .06
radius2 = .15

fixBoxIds=[]
moveBoxIds=[]

i=0
for i in range(0,365,5):
	r = math.radians(i)
	x1 = radius1 * math.cos(r)
	y1 = radius1 * math.sin(r)
	x2 = radius2 * math.cos(r-math.radians(5))
	y2 = radius2 * math.sin(r-math.radians(5))
	x3 = radius2 * math.cos(r+math.radians(5))
	y3 = radius2 * math.sin(r+math.radians(5))
	
	x4 = radius1 * math.cos(r-math.radians(5))
	y4 = radius1 * math.sin(r-math.radians(5))
	x5 = radius1 * math.cos(r+math.radians(5))
	y5 = radius1 * math.sin(r+math.radians(5))
	x6 = radius2 * math.cos(r)
	y6 = radius2 * math.sin(r)
	
	fixBoxIds.append(O.bodies.append(facet([(x1,y1,.01),(x2,y2,.01),(x3,y3,.01)])))
	fixBoxIds.append(O.bodies.append(facet([(x4,y4,.01),(x5,y5,.01),(x6,y6,.01)])))
	moveBoxIds.append(O.bodies.append(facet([(x1,y1,.01),(x2,y2,.01),(x3,y3,.01)])))
	moveBoxIds.append(O.bodies.append(facet([(x4,y4,.01),(x5,y5,.01),(x6,y6,.01)])))

###############################################
#engines 
###############################################

O.engines = [
        ForceResetter(),
        InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
        InteractionLoop(
                # interaction loop
                [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
                [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()],
                [Law2_ScGeom6D_CohFrictPhys_CohesionMoment(always_use_moment_law=True),Law2_ScGeom_FrictPhys_CundallStrack()]
        ),
        NewtonIntegrator(gravity=gravity,damping=0.2),
        #TranslationEngine(translationAxis=[0,0,1],velocity=-0.01,ids=idsCyl3),
        TranslationEngine(translationAxis=[1,0,0],velocity=velocity_cyl,ids=idsCyl2),
        TranslationEngine(translationAxis=[1,0,0],velocity=velocity_cyl,ids=moveBoxIds),

        PyRunner(command='plotPlotData()',iterPeriod=10),
]

###############################################
#output
###############################################
sp_num = len([b for b in O.bodies if isinstance(b.shape, Sphere)])  # 粒子の総数をカウント
print("number of spheres = ",sp_num)

O.dt=0.5*PWaveTimeStep()
def plotPlotData():
	pipe_force_x = sum([O.forces.f(i)[0] for i in idsCyl2])
	pipe_force_y = sum([O.forces.f(i)[1] for i in idsCyl2])
	plot.addData(disp=O.time*velocity_cyl, force_x=pipe_force_x,force_y=pipe_force_y)
	plot.saveDataTxt('pipe_force.out',vars=('disp','force_x','force_y'))


plot.plots={'disp':('force_x','force_y')}
plot.plot()
##########################################################

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