yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #17445
[Question #670047]: Determining macro parameters in uniaxial compression
New question #670047 on Yade:
https://answers.launchpad.net/yade/+question/670047
Hi:
I have an uniaxial compression test of a cylinder, which I did following the YADE example. I need now to determine the macro parameters (like Young modulus or Poisson ratio) in order to relate them to the micro ones... I don't have any idea of how to determine the macro parameters (I'm new to YADE and DEM in general). Could you give some clues??... I don't know either which other macro parameters could be determined, so it would be great if you could tell me that too... (I have read about "angle of repose" and "bulk density" for instance, but I'm not quite sure). I post here the code I have so far:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import division
from yade import plot,pack,timing
import time, sys, os, copy
#DATOS PROBETA
RADIO = 0.075 #7.5 cm
ALTURA = 0.3 #30 cm
radio_particulas = 0.005 #5 mm
radio_fuzz = 0.001 #1 mm
# default parameters or from table
readParamsFromTable(noTableOk=True, # unknownOk=True,
young=24e9,
poisson=.2,
sigmaT=3.5e6,
frictionAngle=atan(0.8),
epsCrackOnset=1e-4,
relDuctility=30,
intRadius=1.5,
dtSafety=.8,
damping=0.4,
strainRateTension=.5,
strainRateCompression=.5,
setSpeeds=True,
doModes=2,
specimenLength=.15,
isoPrestress=0,
)
from yade.params.table import *
concreteId=O.materials.append(CpmMat(young=young,frictionAngle=frictionAngle,poisson=poisson,density=4800,sigmaT=sigmaT,relDuctility=relDuctility,epsCrackOnset=epsCrackOnset,isoPrestress=isoPrestress))
sps=SpherePack()
sp=pack.randomDensePack(pack.inCylinder((0,0,0),(0,0,ALTURA),radius=RADIO),spheresInCell=2000,radius=radio_particulas,rRelFuzz=radio_fuzz/radio_particulas,memoizeDb='/home/anibal/esferas.sqlite',returnSpherePack=True)
sp.toSimulation(material=concreteId)
bb=uniaxialTestFeatures()
negIds,posIds,axis,crossSectionArea=bb['negIds'],bb['posIds'],bb['axis'],bb['area']
O.dt=dtSafety*PWaveTimeStep()
mm,mx=[pt[axis] for pt in aabbExtrema()]
coord_25,coord_50,coord_75=mm+.25*(mx-mm),mm+.5*(mx-mm),mm+.75*(mx-mm)
area_25,area_50,area_75=approxSectionArea(coord_25,axis),approxSectionArea(coord_50,axis),approxSectionArea(coord_75,axis)
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intRadius,label='is2aabb'),],verletDist=.05*sphereRadius),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intRadius,label='ss2sc')],
[Ip2_CpmMat_CpmMat_CpmPhys()],
[Law2_ScGeom_CpmPhys_Cpm()],
),
NewtonIntegrator(damping=damping,label='damper'),
CpmStateUpdater(realPeriod=.5), UniaxialStrainer(strainRate=strainRateTension,axis=axis,asymmetry=0,posIds=posIds,negIds=negIds,crossSectionArea=crossSectionArea,blockDisplacements=False,blockRotations=False,setSpeeds=setSpeeds,label='strainer')
]
O.saveTmp('initial');
O.timingEnabled=False
def initTest():
strainer.strainRate=-abs(strainRateCompression)
from yade import qt
renderer=qt.Renderer()
renderer.dispScale=(100,100,100)
O.step();
ss2sc.interactionDetectionFactor=1.
is2aabb.aabbEnlargeFactor=1.
initTest()
waitIfBatch()
Thanks in advance
--
You received this question notification because your team yade-users is
an answer contact for Yade.