← Back to team overview

yade-users team mailing list archive

Re: [Question #293368]: Young modulus of concrete

 

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

    Status: Open => Answered

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

of course, for different strains you get different stresses and different
"apparent stiffness" stress/strain (regardless DEM, FEM, hand
calculation...). Young's modulus is stress[0]/strain[0] **only if** stress
in all other directions are zero (uniaxial stress state). For example, if
instead of zero perpendicular stress you prescribe zero perpendicular
strain (uniaxial strain state), stress[0]/strain[0] is Oedometric module
(which is related to Young's modulus via Poisson's ratio, but basically has
different value)

To compute Young's modulus, you should use stressMask=0bXXX110 (X as shear
components should not matter much) and goal=(X,0,0, 0,0,0), here X being
some reasonable strain value (.00001 as in your script should be OK).

cheers
Jan


2016-05-06 15:22 GMT+02:00 liukeqi <question293368@xxxxxxxxxxxxxxxxxxxxx>:

> New question #293368 on Yade:
> https://answers.launchpad.net/yade/+question/293368
>
> Hello everyone,
> I want to use the boundary controller “peri3dController” to test the
> property of the concrete material, but I found that the Young modulus of x
> direction will change when the rate of x direction's strain and y
> direction's strain changed(x is perpendicular to y), but in the finite
> element method and in the elastic stage it will not change. I use the first
> code to calculate the Young modulus of x direction when there had strain in
> x direction and is no strain in y direction and save the model. Then in the
> second code I load the model and calculate the Young modulus of x direction
> when there had both strain in x and y direction.  Can you give me some
> suggestions? Thanks a lot. This is my code.
> ###################################################### first code
> #!/usr/bin/python # This is server.py file
> from __future__ import division
> import string
> from yade import plot,qt
> from yade.pack import *
> from yade import pack, plot
>
>
> O.materials.append(CpmMat(density=4800,young=10.4e10,frictionAngle=.7,poisson=.15,sigmaT=3e60,epsCrackOnset=1e60,relDuctility=30,neverDamage=True))
>
> initSize=1.2
>
>
> sp=pack.randomPeriPack(radius=.05,initSize=Vector3(initSize,initSize,initSize))
>
> sp.toSimulation()
>
>
>
>
>
> 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(
>
>        stressMask=0b011100, # prescribed ex,ey,sz,syz,ezx,sxy; e..strain;
> s..stress
>        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'
>        ),
>
> ]
> O.save('/tmp/first.gz')
> p3d.goal=(0.00001,0,0,0,0,0) #xx, yy, zz, yz, zx, xy
> O.step()
> bo1s.aabbEnlargeFactor=ig2ss.interactionDetectionFactor=1.
> O.run(); O.wait()
>
> print "the first Young modulus"
> print p3d.stress[0]/p3d.strain[0]
>
> ########################################## second code
> #!/usr/bin/python # This is server.py file
> from __future__ import division
> import string
> from yade import plot,qt
> from yade.pack import *
> from yade import pack, plot
>
> loadFile='/tmp/first.gz'
> O.load(loadFile)
>
> p3d.goal=(0.00001,0.00001,0,0,0,0) #xx, yy, zz, yz, zx, xy
> O.step()
> bo1s.aabbEnlargeFactor=ig2ss.interactionDetectionFactor=1.
> O.run(); O.wait()
>
> print "the second Young modulus"
> print p3d.stress[0]/p3d.strain[0]
>
> --
> 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.