How to make a cube concrete specimen with polyhedrons and small balls?

Asked by weijie on 2020-07-22

Dear all,

I want to do a concrete uniaxial compression experiment, where the concrete cube specimen is composed of polyhedrons and balls. Is there a way to complete this specimen or make the balls and polyhedrons bond into a cube?

Thanks in advance.
Jie

Question information

Language:
English Edit question
Status:
Answered
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
2020-07-26
Last reply:
2020-08-10
Jan Stránský (honzik) said : #1

Hello,

1) create a loose packing with spheres and polyhedrons (see e.g. [1,2,3] discussions with similar topic)
2) compress them

> Is there a way to complete this specimen or make the balls and polyhedrons bond into a cube?

what does "complete" mean?
what does "bond into" mean?

cheers
Jan

[1] https://answers.launchpad.net/yade/+question/294529
[2] https://answers.launchpad.net/yade/+question/691171
[3] https://answers.launchpad.net/yade/+question/686692

weijie (amandajoe) said : #2

Hi Jan,

I want to create a dense pack with polyhedrons and spheres within a cube.I found that randomDensePack may be useful, but it is filled with balls.

>what does "bond into" mean?

I want to form cohesive bond in polyhedron and spherical aggregate.The aggregates using in the simulation are essentially individual particles glued with cohesive bonds and the bonds can break depending on the load.Just like CpmMat in this example[1].

Best regards
weijie

[1]https://gitlab.com/yade-dev/trunk/-/blob/master/examples/concrete/uniax.py#L78

Jan Stránský (honzik) said : #3

Hello,

1) follow instructions from my 1st answer

2) thanks for more info. Have a look at this MWE:
###
O.materials.append(CpmMat())

O.engines = [
    ForceResetter(),
    InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Polyhedra_Aabb()]),
    InteractionLoop(
        [
            Ig2_Sphere_Sphere_ScGeom(),
            Ig2_Sphere_Polyhedra_ScGeom(),
            Ig2_Polyhedra_Polyhedra_ScGeom(),
        ],
        [Ip2_CpmMat_CpmMat_CpmPhys()],
        [Law2_ScGeom_CpmPhys_Cpm()],
    ),
    NewtonIntegrator(),
]

sph1 = sphere((3,0,0),1)
sph2 = sphere((3,0,3),1)
poly1 = polyhedron(((0,0,0),(1,0,0),(0,1,0),(0,0,1)))
poly2 = polyhedron(((0,0,3),(1,0,3),(0,1,3),(0,0,4)))
O.bodies.append((sph1,sph2,poly1,poly2))

createInteraction(sph1.id,sph2.id)
createInteraction(sph1.id,poly1.id)
createInteraction(poly1.id,poly2.id)
###

The problem is that currently (AFAIK) you cannot create interactions for non-overlapping polyhedron-polyhedron [1] and sphere-polyhedron [2] couples.
It would need modification of source code and proper implementation of interactionDetectionFactor, see [3].

cheers
Jan

[1] https://gitlab.com/yade-dev/trunk/-/blob/master/pkg/dem/Polyhedra_Ig2.cpp#L557
[2] https://gitlab.com/yade-dev/trunk/-/blob/master/pkg/dem/Polyhedra_Ig2.cpp#L497
[3] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.Ig2_Sphere_Sphere_ScGeom.interactionDetectionFactor

Can you help with this problem?

Provide an answer of your own, or ask weijie for more information if necessary.

To post a message you must log in.