I am modeling a TBM step-by-step excavation in FLAC3D and have been trying to fix gridpoints (small-strain, gridpoints don’t move) when their deformation exceeds a limit. The gridpoints of interest are at the interface between the TBM excavation and soil zones. The gridpoints will be checked to a limit while the shield (not actually modeled) of the TBM is near them. The limit for each gridpoint is based on the deformation value of the gridpoint when the TBM is one excavation step away from it.
I decided to take an approach where I would group/slot the gridpoints on the interface of interest by excavation step. First, I would query the displacement of the gridpoints of the excavation step in front of the TBM. Then, I would add this displacement to a scalar value to solve for each gridpoint’s limit. Then, when the gridpoint is above the fictitious shield, I would use a callback function to continuously check the gridpoint deformation against it’s limit and fix the gridpoint if exceeded. This essentially sets a deformation limit to the gridpoint.
However, when I try this approach, I am not able to solve for the displacement of the gridpoints per group by using the itasca.gridpointarray.disp() function in Python. This is because there is not a gridpointarray.in_group function like there is for zonearray.in_group. Is this a function that would be added? Is there another approach such as setting a group to the zones based on excavation step, querying the gridpoints, deleting the gridpoints not on the interface of interest, and then using the gridpointarray.disp() function?
Some guidance would be appreciated. Again, this is all to manually set a limit of deformation to gridpoints which does not seem to be a function in FLAC3D. I’m just trying to simulate the shield of a TBM which would prevent deformation of the soil if it was to deform more than the overcut of the TBM.