← Back to team overview

yade-users team mailing list archive

Re: [Question #294036]: Rate of strain between compressive and tensile strength using CpmMat.

 

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

    Status: Open => Answered

Jan Stránský proposed the following answer:
Hello,

two notes:
1) EnlargeFactor=1.0 generates very loose interaction network. The CPM
model was developed and tested for EnlargeFactor=1.5
2) I am not sure if periodic simulation is the best choice for compressive
simulations (as the cracks would not be periodic), you can also try
non-periodic simulation, see e.g. [1]

cheers
Jan

[1] https://github.com/yade/trunk/blob/master/examples/concrete/uniax.py


2016-05-22 14:46 GMT+02:00 liukeqi
<question294036@xxxxxxxxxxxxxxxxxxxxx>:

> New question #294036 on Yade:
> https://answers.launchpad.net/yade/+question/294036
>
> Hello everyone,
> I looked up document information and found that the concrete’s strain at
> maximum compressive strength is about 0.0033 and the strain at maximum
> tensile strength is about 0.00015. The rate of compressive strain and
> tensile strain is about 20. I used the following code to compress the
> concrete and tense it and I found from the diagram that the rate is about
> 2. I tried to change the rate by modifying the parameters, but I failed.
> Can you give me some suggestion about how to change the rate between the
> strain at maximum compressive strength and the strain at maximum tensile
> strength?
>
> #########################################first code, calculate the strain
> at maximum compressive strength
> #!/usr/bin/python
> import string
> from yade import plot,qt
> from yade.pack import *
> from yade import pack, plot
>
> O.materials.append(CpmMat(young=24e9,frictionAngle=atan(0.8),poisson=.2,sigmaT=3.5e6,relDuctility=30,epsCrackOnset=1e-4))
>
> initSize=1.2
>
>
> sp=pack.randomPeriPack(radius=.05,initSize=Vector3(initSize,initSize,initSize))
>
> sp.toSimulation()
>
> O.save('/tmp/hh.gz')
>
> plot.plots={'ex':('sx',)}
> def plotAddData():
>         plot.addData(
>                 sx=p3d.stress[0],
>                 ex=p3d.strain[0],
>
>         )
>
>
> O.dt=PWaveTimeStep()/2
>
> EnlargeFactor=1.5
> EnlargeFactor=1.0
> O.engines=[
>         ForceResetter(),
>
> InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=EnlargeFactor,label='bo1s')]),
>         InteractionLoop(
>
> [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=EnlargeFactor,label='ig2ss')],
>                 [Ip2_CpmMat_CpmMat_CpmPhys()],[Law2_ScGeom_CpmPhys_Cpm()]),
>         NewtonIntegrator(),
>         Peri3dController(
>
>                                                         nSteps=4000,
>               # how many time steps the simulation will last
>                                                         # after reaching
> nSteps do doneHook action
>                                                         doneHook='print
> "Simulation with Peri3dController finished."; O.pause()',
>
>                                                         # the prescribed
> path (step,value of stress/strain) can be defined in absolute values
>
>                                                         # or in relative
> values
>
>                                                         # if the goal
> value is 0, the absolute stress/strain values are always considered (step
> values remain relative)
>
>                                                         # if ##Path is not
> explicitly defined, it is considered as linear function between (0,0) and
> (nSteps,goal)
>                                                         # as in yzPath and
> xyPath
>                                                         # the relative
> values are really relative (zxPath gives the same - except of the sign from
> goal value - result as yyPath)
>
>
>                                                         # variables used
> in the first step
>                                                         label='p3d'
>                                                         ),
>         PyRunner(command='plotAddData()',iterPeriod=1),
>
> ]
>
> p3d.stressMask=0b111110       # prescribed ex,ey,sz,syz,ezx,sxy;
>  e..strain;  s..stress
> p3d.goal=(-0.005,0,0,0,0,0)  #xx, yy, zz, yz, zx, xy
> O.step()
> bo1s.aabbEnlargeFactor=ig2ss.interactionDetectionFactor=1.
> O.run(); O.wait()
> plot.plot(subPlots=False)
>
> #########################################second code, calculate the strain
> at maximum tensile strength
> #!/usr/bin/python
> import string
> from yade import plot,qt
> from yade.pack import *
> from yade import pack, plot
>
>
> O.load('/tmp/hh.gz')
>
> plot.plots={'ex':('sx',)}
> def plotAddData():
>         plot.addData(
>                 sx=p3d.stress[0],
>                 ex=p3d.strain[0],
>
>         )
>
>
> O.dt=PWaveTimeStep()/2
>
> EnlargeFactor=1.5
> EnlargeFactor=1.0
> O.engines=[
>         ForceResetter(),
>
> InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=EnlargeFactor,label='bo1s')]),
>         InteractionLoop(
>
> [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=EnlargeFactor,label='ig2ss')],
>                 [Ip2_CpmMat_CpmMat_CpmPhys()],[Law2_ScGeom_CpmPhys_Cpm()]),
>         NewtonIntegrator(),
>         Peri3dController(
>
>                                                         nSteps=4000,
>               # how many time steps the simulation will last
>                                                         # after reaching
> nSteps do doneHook action
>                                                         doneHook='print
> "Simulation with Peri3dController finished."; O.pause()',
>
>                                                         # the prescribed
> path (step,value of stress/strain) can be defined in absolute values
>
>                                                         # or in relative
> values
>
>                                                         # if the goal
> value is 0, the absolute stress/strain values are always considered (step
> values remain relative)
>
>                                                         # if ##Path is not
> explicitly defined, it is considered as linear function between (0,0) and
> (nSteps,goal)
>                                                         # as in yzPath and
> xyPath
>                                                         # the relative
> values are really relative (zxPath gives the same - except of the sign from
> goal value - result as yyPath)
>
>
>                                                         # variables used
> in the first step
>                                                         label='p3d'
>                                                         ),
>         PyRunner(command='plotAddData()',iterPeriod=1),
>
> ]
>
>
>
>
> p3d.stressMask=0b111110       # prescribed ex,ey,sz,syz,ezx,sxy;
>  e..strain;  s..stress
> p3d.goal=(0.0015,0,0,0,0,0)  #xx, yy, zz, yz, zx, xy
> O.step()
> bo1s.aabbEnlargeFactor=ig2ss.interactionDetectionFactor=1.
>
> O.run(); O.wait()
> plot.plot(subPlots=False)
>
>
> --
> 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     : yade-users@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~yade-users
> More help   : https://help.launchpad.net/ListHelp
>

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