Contact between sphere-gridconnection not detected in a pfacet edge

Asked by Rohit John on 2021-04-03

Hello,

The simulation consists of two sphere moving towards two edges of pfacet triangle. They just pass through the edges without any interaction. I think there could be something wrong with the engines I'm using, but I could not find it. Kindly help me. The code is given below.

Kind regards,
Rohit K John

# ---------------------------------------------------------------------------- Code
from yade import geom, utils
from yade.gridpfacet import *

# ---------------------------------------------------------------------------- input parameter
# ----------------------------------------------------- target
target_young = 50e9
target_density = 1000
target_poisson = 0.3
target_friction = radians(30)

p_radius = 5e-2
pfacet_side = 0.5
pfacet_circum_rad = pfacet_side/sqrt(3)
node_angle = [radians(0), radians(120), radians(240)]
pfacet_nodes = [
    Vector3([2*pfacet_circum_rad * cos(node_angle[0]), pfacet_circum_rad * sin(node_angle[0]), 0]),
    Vector3([pfacet_circum_rad * cos(node_angle[1]), pfacet_circum_rad * sin(node_angle[1]), 0]),
    Vector3([pfacet_circum_rad * cos(node_angle[2]), pfacet_circum_rad * sin(node_angle[2]), 0]),
]
# ---------------------------------------------------------------------------- Materials
target_int_mat = 'pfacet_int_mat'
target_ext_mat = 'pfacet_ext_mat'

O.materials.append(
    FrictMat(
        young = target_young,
        poisson = target_poisson,
        density = target_density,
        label = target_ext_mat,
        frictionAngle = target_friction,
    )
)

O.materials.append(
    CohFrictMat(
        young = target_young,
        poisson = target_poisson,
        density = target_density,
        label = target_int_mat,

        frictionAngle = target_friction,
        normalCohesion = 3e100,
        shearCohesion = 3e100,
        momentRotationLaw = True,
    )
)
# ---------------------------------------------------------------------------- Engines
O.engines = [
                ForceResetter(),

                InsertionSortCollider([
                    Bo1_GridConnection_Aabb(),
                    Bo1_PFacet_Aabb(),
                    Bo1_Sphere_Aabb(),
                ]),

                InteractionLoop(
                    [
                        Ig2_PFacet_PFacet_ScGeom(),
                        Ig2_GridNode_GridNode_GridNodeGeom6D(),
                        Ig2_GridConnection_GridConnection_GridCoGridCoGeom(),
                        Ig2_GridConnection_PFacet_ScGeom(),
                        Ig2_Sphere_PFacet_ScGridCoGeom(),
                        Ig2_Sphere_GridConnection_ScGridCoGeom(),
                        Ig2_Sphere_Sphere_ScGeom()
                    ],
                    [
                        Ip2_FrictMat_FrictMat_FrictPhys(),
                        Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(
                            setCohesionNow = True,
                            setCohesionOnNewContacts = False
                            ),
                    ],
                    [
                        Law2_GridCoGridCoGeom_FrictPhys_CundallStrack(),
                        Law2_ScGeom_FrictPhys_CundallStrack(),
                        Law2_ScGridCoGeom_FrictPhys_CundallStrack(),
                        Law2_ScGeom6D_CohFrictPhys_CohesionMoment(),
                    ],
                ),
                NewtonIntegrator(gravity = [0,0,0], damping = 0.0),
            ]
# ---------------------------------------------------------------------------- objects
# ----------------------------------------------------- target

pnode = []
pcyl = []
pfacet = []
pfacetCreator1(
    pfacet_nodes,
    p_radius,
    nodesIds = pnode,
    cylIds = pcyl,
    pfIds = pfacet,
    wire = False,
    fixed = False,
    color = [0.5,0.5,0.5],
    materialNodes = target_int_mat,
    material = target_ext_mat,
    )

target_ids = pnode + pcyl + pfacet
# ----------------------------------------------------- spheres
sp1 = sphere([0, 0.25, .2], 5e-2, material = target_ext_mat)
sp2 = sphere([0, -0.25,-.2], 5e-2, material = target_ext_mat)

sp1_ID = O.bodies.append(sp1)
sp2_ID = O.bodies.append(sp2)

O.bodies[sp1_ID].state.vel = [0,0,-5]
O.bodies[sp2_ID].state.vel = [0,0, 5]

# ----------------------------------------------------- Simulation params
O.dt = utils.PWaveTimeStep()
O.saveTmp()

Question information

Language:
English Edit question
Status:
Answered
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
2021-04-03
Last reply:
2021-04-09
Klaus Thoeni (klaus.thoeni) said : #1

Hi John,

I am aware of the issue and I have a fix for it. However, it seems that there are some more issues with pFacets and we are trying to solve them. So please be patient.

Klaus

Rohit John (rohitkjohn) said : #2

Dear Klaus,

Thanks for working on fixing this bug. Shall I post on launchpad if I find any additional bugs?

Kind regards,
Rohit K. John

Hi,
Additional bugs could be discussed directly hre: https://gitlab.com/yade-dev/trunk/-/issues/210

Bruno

Can you help with this problem?

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

To post a message you must log in.