Welcome to ask.woodem.org. You may post when you login through your GitHub account.

How to fixed boundary of SpherePack()

0 votes
56 views
asked Feb 22 by Anastasia (130 points)

Hi Vaclav, 

I wanna reproduce the experiment where also wooDem was being used from "Investigation and 3D Discrete Element Modeling of Fracture of Sea Ice Beams" by S. Mohammadafzali, R. Sarracino, R. Taylor, C. W. Stanbridge, A. Marchenko, but getting stuck at few tasks.

Descriprion of the experiment: an ice beam 2.5 m, 0.50 m and 0.55 m, loaded to failure by a cylindrical steel platen of diameter 15 cm at a velocity of 1 mm/s.

mat=IceMat()
m = IceMat(density=1e3,breakN = 0.0037,young=5.4e8,alpha=(.1,.1),beta = (1.25,1.25,1.25))
matU=utils.defaultMaterial()
matCyl = FrictMat(density=7.7e3,young=20e10,ktDivKn=.2,tanPhi=.5)
S=woo.master.scene=Scene()
S.fields=[DemField(gravity=(0,0,-9.81),distFactor=1.1)]
sp=woo.pack.SpherePack()
sp.makeCloud((0,0,0),(2.9,.5,.55),num=1300)

sp.toSimulation(S,fixed=False,mat=m)

c=InfCylinder.make((1.45,0,1),radius=.075,axis=1,mat=matCyl,glAB=(0,1),fixed=False,angVel=(0,0,-0.01))

S.dem.par.add([c,Wall.make(-0.5,axis=2,fixed=True,mat=matU)])
S.engines=DemField.minimalEngines(damping=.0, p2=Cp2_IceMat_IcePhys(bonds0=15,bonds1=15),law=Law2_L6Geom_IcePhys())
S.dt=1e-3
S.throttle=1e-4

1. The paper says that: "each end of the beam was fixed in place by a small pad of placeholder ice particles extending 0.2 m from each end along the ice beam's lengthwise axis". Could you help me fixed each end the same way?

2. I don't understand exactly how interaction of cylinder and particle cloud should be add in engine. Could you clarify the situation?

Best regards, Anastasia/

1 Answer

+1 vote
answered Feb 22 by eudoxos (47,770 points)
Hi Anastasia,

I am not sure how the end was done exactly, do you have a picture or something similar? You can also try contacting the authors for clarification.

The cylinder and particles will interact automatically. The DemField.minimalEngines will add geometry functors for all available shape combinations (sphere-sphere, but also cylinder-sphere and many others).

HTH,

Vaclav
commented Feb 23 by Anastasia (130 points)

Hi Vaclav,

It was my first thought to write the authors of the paper, but in the article not mentioned the corresponding author. I try to use google power and my logical skills, but the only one email which I found leave my answer email without an answer.

these paper, the picture at page 8, https://www.dropbox.com/s/yiubicb58d1deqv/mohammadafzali2016.pdf?dl=0

Thanks for your answer.

Sincerely, Anastasia.

commented Feb 26 by Anastasia (130 points)

Hi Vaclav,

Now, in my example cylinder just vanish at second step, so I supposed that spherePack and cylinder haven't interract.

Should I set makeCloud as Clump? if so, How I can do it?


woo.master.usesApi=10104
S=woo.master.scene=woo.core.Scene(fields=[DemField(gravity=(0,0,-10))])

import woo.pack
cloud=woo.pack.SpherePack()
cloud.makeCloud((0,0,0),(2.9,.5,.55),num=1300)
m = IceMat(density=1e3,breakN = 0.0037,young=5.4e8,alpha=(.1,.1),beta = (1.25,1.25,1.25))

cloud.toSimulation(S,fixed=False,mat=m)

matCyl = FrictMat(density=7.7e3,young=20e10,ktDivKn=.2,tanPhi=.5)
c=InfCylinder.make((1.25,0,1),radius=.075,axis=1,mat=matCyl,glAB=(0,1),fixed=False)
S.dem.par.add(c)

S.dem.par.add(woo.utils.wall(-.2,axis=2,sense=1),nodes=False)
S.dtSafety=.8
S.engines=[Leapfrog(reset=True,damping=.4),InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Wall_Aabb(),Bo1_InfCylinder_Aabb()]), ContactLoop([Cg2_Sphere_Sphere_L6Geom(),Cg2_Wall_Sphere_L6Geom(),Cg2_InfCylinder_Sphere_L6Geom()],
[Cp2_IceMat_IcePhys(bonds0=15,bonds1=15)],[Law2_L6Geom_IcePhys()]),
DynDt(stepPeriod=1000)]

S.saveTmp()

Sincerely, Anastasia.

commented Mar 2 by eudoxos (47,770 points)

If the cylinder disappears, it might be timestep issue. Set dtSafety=0.01 (to test) and also Dy Dt.stepPeriod=10 (or even 1). Just quick response from phone, excuse my brevity.

commented Mar 2 by eudoxos (47,770 points)

Also, the cylinder should be fixed - it is an infinte body with infinite mass and inertia (unless you define otherwise) and will behave erratically. If it is a real cylinder with mass etc, assign those quantities to cylinder's node (cyl.shape.nodes[0].dem.mass=... inertia etc). I am surprised self-checking does not catch this. Cannot test now, just an idea.

...