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.

_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to