← Back to team overview

yade-users team mailing list archive

[Question #694253]: JCFpmMat parameters define

 

New question #694253 on Yade:
https://answers.launchpad.net/yade/+question/694253

Dear Yade users,




I found the JCFpmMat and related functors might be good to simulate bonded particle problems(https://answers.launchpad.net/yade/+question/635871).  I was trying to simulate a uniaxial compression of a cubic brick that is making by using soft bonding material connecting hard sand particles(the mechanical parameters could be given). So my brick is made of two parts: soft bonding material and hard particles. Here are my questions.


In JCFpmMat (https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.JCFpmMat), it defines a lot of stiffness, strength parameters which are really confusing. 
1. What are the differences between cohesion and jointCohesion? 
2.  What is the meaning of joint surface, does it describe the strength/stiffness of debonding? if so, why do we have to define the stiffness of debonding? why not just define the stiffness of the bonding material itself?
3. What is the young in my case, it depends on IP2 functor, but I did not find related information. Does it mean the Young modulus of particles?


from __future__ import division
from __future__ import print_function

from future import standard_library
standard_library.install_aliases()
from yade import plot,pack,timing
import time, sys, os, copy
readParamsFromTable(noTableOk=True, # unknownOk=True,
	young=1e6,
	poisson=.6,

	sigmaT=3.5e6,
	frictionAngle=radians(20),
	epsCrackOnset=1e-4,
	relDuctility=30,

	intRadius=1.5,
	dtSafety=.8,
	damping=0.4,
	strainRateTension=-1,
	strainRateCompression=-.5,
	setSpeeds=True,

	specimenLength=.04,
	sphereRadius=0.0005,

	# isotropic confinement (should be negative)
	isoPrestress=0,
	jointDil=radians(0),
	jointFrict=radians(20),
	OUT='compressionTest_JCFPM'

)

from yade.params.table import *
#alphaKr=30,alphaKtw=30,
#O.materials.append(JCFpmMat(type=1,young=1e10,frictionAngle=radians(30),density=2600,poisson=0.3,tensileStrength=1e6,cohesion=1e6,jointNormalStiffness=1e7,jointShearStiffness=1e7,jointCohesion=1e6,jointFrictionAngle=atan(0.8),jointDilationAngle=radians(0))
O.materials.append(JCFpmMat(type=1,young=1e6,frictionAngle=radians(30),density=3000,poisson=0.3,tensileStrength=3e7,cohesion=1e6,jointNormalStiffness=1e7,jointShearStiffness=1e4,jointCohesion=1e4,jointFrictionAngle=jointFrict,jointDilationAngle=jointDil))

#O.materials.append(CohFrictMat(young=young,poisson=poisson,density=2600,frictionAngle=radians(30),normalCohesion=1e3,shearCohesion=1e3,momentRotationLaw=True,etaRoll=0.1,label='spheres'))
#concreteId=O.materials.append(FrictMat(young=15e6,poisson=.4,frictionAngle=0,density=0,label='frictionlessWalls'))

sp=pack.randomDensePack(pack.inAlignedBox((0,0,0),(specimenLength,specimenLength,specimenLength)),spheresInCell=2000,radius=sphereRadius,memoizeDb='/tmp/triaxPackCache.sqlite',returnSpherePack=True)
sp.toSimulation()
bb=uniaxialTestFeatures()
negIds,posIds,axis,crossSectionArea=bb['negIds'],bb['posIds'],bb['axis'],bb['area']
O.dt=0.9*PWaveTimeStep()	


O.engines=[
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb(label='is2aabb'),],verletDist=.05*sphereRadius),
	InteractionLoop(
	[Ig2_Sphere_Sphere_ScGeom()],
	[Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1,label='interactionPhys')],
	[Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(recordCracks=True,Key=OUT,label='interactionLaw'),Law2_ScGeom_FrictPhys_CundallStrack()]

	),
	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'),
PyRunner(virtPeriod=1e-3/strainRateTension,realPeriod=1,command='addPlotData()',label='plotDataCollector',initRun=True),
	#PyRunner(realPeriod=4å,command='stopIfDamaged()',label='damageChecker'),
#
]

def addPlotData():
	yade.plot.addData({'t':O.time,'i':O.iter,'eps':-(strainer.strain),'sigma':-(strainer.avgStress+isoPrestress),})
print(strainer.strain)	
plot.plots={'eps':('sigma',)}	
plot.plot(subPlots=False)


O.saveTmp('initial');

O.timingEnabled=False


O.run()
	#InteractionLoop(
	#	
#	),
#O.materials.append(JCFpmMat(type=1,young=1e8,frictionAngle=radians(30),density=3000,poisson=0.3,tensileStrength=1e6,cohesion=1e6,jointNormalStiffness=1e7,jointShearStiffness=1e7,jointCohesion=1e6,jointFrictionAngle=atan(0.8),jointDilationAngle=radians(0))


Cheers,
Aaron

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