yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #08704
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.