Flat joint contact model between rigid block

Hello,

I am writing a code in which I am using the flat joint contact model to define interactions between rigid blocks.

In a very simplified version of my code (provided at the end of this post), I create two rigid block boxes separated by a void. After defining the default contact law between rblock-rblock and assigning the flat-joint contact model to it, I see that although my two rigid blocks are not touching and have a gap separating them greater than zero, PFC nevertheless detects and creates and flat-jointed contact between the two pieces (see Figure 1). When I then attempt to move one block in the direction of the other, a force emerges at the contact between the two pieces even though they are still not touching. This behavior is undesirable for my application.


Figure 1. Contact between two rblocks separated by a void

Can you tell me why this is occurring? Is there a way to prevent this from happening and ensure contacts are only creating once the two pieces overlap?

My ultimate goal is to fill the void between these two rblocks with more rblocks, each belonging to different groups and use different the flat-joint contact model to define interactions between particles belonging to each group separately.

When I ran some trials, I saw that using the command line rblock tolerance extent 0 resolves the issue but I am not sure whether this is an appropriate fix. Could it lead to instability in my model once I increase the number of particles?

The code is:

model new
model large-strain on
model domain extent -1 1

;### CREATE RIGID BLOCK ###
rblock create box …
[-50e-3] [50e-3] [10e-3] [60e-3] …
group ‘material1’

rblock create box …
[-50e-3] [50e-3] [-50e-3] [0] …
group ‘material2’

rblock attribute density 2000 damp 0.7
;rblock tolerance extent 0

;### CREATE CONTACT LAW ###
contact cmat default type rblock-rblock model flatjoint method deformability …
emod [1e9] kratio [2] …
property …
fj_ten [1e20] fj_fric [0.4] fj_coh [1e20]

model clean all

Thank you!

Hello @romaric.desbrousses

This is pieces (including rblocks) default behavior in PFC. The reason is because if pieces were mapped into cells based solely on their minimum extents, one could not guarantee that contacts would be created prior to the cycle when forces may develop between pieces. This is problematic because large forces may exist during a single cycle, leading to model instability. See Piece Extents section in the 30.0 - Update Spatial Searching Data Structures for an in-depth discussion on the subject.