I’m trying to find a way to access to zone joint contact variables either via FISH or Python (e.g., get/set properties, displacements, state, extras, etc). I haven’t found any guidance in the available documentation (I’m using FLAC3D v9). Based on some trial & error, it seems that they are related to some PFC features and functions. When plotting the zone joints in FLAC3D, it shows that they are vertex-facet contacts. I tried both FISH and Python functions to query properties using some PFC wall-face functions, but it showed that there were no properties assigned.
You are correct - the zone joints use PFC contact logic. The plan is to create FISH functions and histories for zone joints, but for now you need to use the contact functions. An example of how your could do this in FISH is shown below
fish def test_zj
loop foreach cp contact.list
io.out('kn: '+string(contact.prop(cp,'stiffness-normal')))
io.out('shear disp: '+string(contact.prop(cp,'disp-shear')))
io.out('state: '+string(contact.prop(cp,'state-string')))
contact.extra(cp) = 99
end_loop
end
[test_zj]
I am using PFC3D to simulate a rock specimen under triaxial compression, with the goal of quantifying the different energy components within the system. So far, I have been able to successfully track the boundary work, strain energy, kinetic energy, frictional energy, and damping energy within the deformation process.
However, I am currently struggling with tracking the elastic strain energy stored in the parallel bonds at the moment of bond breakage, in order to estimate the fracture energy associated with each broken bond.
Specifically, I would like to:
Detect when a parallel bond breaks,
Extract the elastic strain energy stored in that bond just prior to failure,
Accumulate this energy over all broken bonds to obtain an estimate of fracture energy.
I understand that bond failure in PFC is handled through contact logic, but I have not found clear guidance on how to access or store the parallel bond strain energy for individual broken bonds via FISH.
If you could advise on the correct approach, or point me to an example or recommended method, I would really appreciate your help.