Modeling Centrifuge Test with Attached Boundary Conditions in FLAC

Hello Everyone,

I am currently working on modeling a centrifuge test at prototype scale. My geometry includes three liquefiable sand layers with varying relative densities (Dr), so I am using the PM4Sand model. The experiment I am replicating was conducted with ring containers on each side of the box. To mimic these side boundaries, I chose to attach the left and right side gridpoints instead of using a free-field boundary condition. Below is the FISH function I wrote for this purpose:

fish define _Attach_Side_Boundaries
global M_xMin, M_xMax, _Attach_List
local _gp, _a, _b, _side_gp, _id1, _id2
loop foreach _gp gp.list
if gp.pos.x(_gp) == M_xMin
_a = M_xMax
_b = gp.pos.y(_gp)
_side_gp = gp.near(_a,_b)
_id1 = gp.id(_gp)
_id2 = gp.id(_side_gp)
command
zone attach gridpointid [_id1] to-gridpointid [_id2] snap on
endcommand
endif
endloop
_Attach_List = attach.list
end

My question is this: I encountered an “illegal geometry” error when using the snap on option. However, if I turn the snap option off, the code runs without error. I believe that the snap option should be enabled due to the nature of the centrifuge test. Does anyone have suggestions for resolving this issue or improving my approach to modeling attached boundaries?

Thank you for any advice.

The snap option should be off.
Please refer to the doc at
https://docs.itascacg.com/itasca920/flac3d/zone/doc/manual/zone_manual/zone_commands/cmd_zone.attach.html#zone.attach

When snap is off, two girdpoints have the same displacements, velocities and accelerations.
When snap is on, two gridpoint will have the same positions in addition to d/v/a, which is not as expected.

1 Like

Thank you for the response. I have a few more questions on this topic. I am interested in applying a tied degree of freedom condition using the zone attach by-face command. However, when I use this command, it only connects adjacent boundary faces. Is there a way to attach non-adjacent boundary faces, such as the left and right boundary faces, using zone attach by-face? If not, is there an alternative approach to achieve this condition for non-adjacent boundaries or should I continue by attaching the side gridpoints?

Yes, use the command “zone attach gridpointid id1 to-gridpointid id2 snap off”, or use the FISH intrinsic “local a1 = attach.create(gppointer1, gppointer2)”, and set "attach.snap (a1) = 0".