← Back to team overview

yade-users team mailing list archive

Re: [Question #240167]: FuncG in ConcretePM.cpp

 

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

    Status: Open => Answered

Jan Stránský proposed the following answer:
Hi Hicham,

the first problem is in material parameters definition. If you use comma at
the end of line, the variable is tuple instead of float. If you want to
pass it to CpmMat constructor, it expects number but gets tuple and raise
the error.

you can try in IPython
a = 1.4,
a.__class__.__name__ # returns 'tuple'
a = 1.4 # without comma
a.__class__.__name__ # returns 'float'

so use
sigmaT = 3.5e6
instead of
sigmaT = 3.5e6,

and the same also for all other material parameters

cheers
Jan



2013/12/4 Hicham BENNIOU <question240167@xxxxxxxxxxxxxxxxxxxxx>

> Question #240167 on Yade changed:
> https://answers.launchpad.net/yade/+question/240167
>
>     Status: Answered => Open
>
> Hicham BENNIOU is still having a problem:
> Here is the script :
>
> from yade import pack, qt, plot
>
> # Vars definition
> specimenLength = 15.0
> spheresInCell = 2000
> sphereRadius= 3.5e-3
> intRadius = 1.5 #Interaction Radius
>
> sigmaT=3.5e6,
> epsCrackOnset=1e-4,
> relDuctility=30,
> isoPrestress=-50000000, #isotropic confinment
>
> strainRateTension=0.5,
> strainRateCompression=.5,
>
> youngConcrete = 24e9
> youngWalls = 0.5
>
> poissonConcrete = 0.2
> poissonWalls = 0.5
>
> frictionAngleConcrete = atan(0.8)
> frictionAngleWalls = 0
>
> densityConcrete = 4800
> densityWalls = 0
>
> damping=0.4
>
> #Create walls around the packing of spheres
> min = Vector3(-.5*specimenLength,-.5*specimenLength,-.5*specimenLength)
> max = Vector3(.5*specimenLength,.5*specimenLength,.5*specimenLength)
>
> Walls =aabbWalls([min,max], thickness = 0)
> wallIds = O.bodies.append(Walls)
>
> #Definig Concrete material and packing spheres
>
> concreteId=O.materials.append(CpmMat(young=youngConcrete,frictionAngle=frictionAngleConcrete,poisson=poissonConcrete,density=densityConcrete,sigmaT=sigmaT,relDuctility=relDuctility,epsCrackOnset=epsCrackOnset,isoPrestress=isoPrestress))
>
> sp=pack.randomDensePack(pack.inAlignedBox(min,max),spheresInCell=spheresInCell,radius=sphereRadius,returnSpherePack=True)
> sp.toSimulation(material=concreteId)
>
> # Defining Engines
> TriaxEngine = TriaxialStressController(
>       maxMultiplier=1.+2e4/youngConcrete,
>       finalMaxMultiplier=1.+2e3/youngConcrete,
>       thickness = 0,
>       stressMask = 7, # 7=111, 1->x, 1->y and 1->z, which means stress is
> controlled on xyz
>       internalCompaction=True,
> )
>
> O.engines=[
>         ForceResetter(),
>
> InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()],verletDist=.05*sphereRadius),
>         InteractionLoop(
>
> [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intRadius),Ig2_Box_Sphere_ScGeom()],
>                 [Ip2_CpmMat_CpmMat_CpmPhys()],
>                 [Law2_ScGeom_CpmPhys_Cpm()],
>         ),
>
>         TriaxEngine,
>
> GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
>         PyRunner(iterPeriod=10,initRun=True,command='history()'),
>         TriaxialStateRecorder(iterPeriod=100,file='~/Bureau/WallStresses'),
>
>         NewtonIntegrator(damping=damping,gravity=(0.,0.,-10.)),
> ]
>
> # record and plot data
>
> def history():
>   plot.addData(e11=TriaxEngine.strain[0], e22=TriaxEngine.strain[1],
> e33=TriaxEngine.strain[2],
>
> ev=-TriaxEngine.strain[0]-TriaxEngine.strain[1]-TriaxEngine.strain[2],
>                 s11=TriaxEngine.stress(TriaxEngine.wall_right_id)[0],
>                 s22=TriaxEngine.stress(TriaxEngine.wall_top_id)[1],
>                 s33=TriaxEngine.stress(TriaxEngine.wall_front_id)[2],
>                 i=O.iter
>         )
>
> O.run(10000)
>
> plot.plots={'e22':('s11','s22','s33','ev')}
> plot.plot()
>
> --
> You received this question notification because you are a member of
> yade-users, which 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 you are a member of
yade-users, which is an answer contact for Yade.