How to connect the specified joints using joints id or joint group

Hi,
I established my 3DEC 7.0 model using Griddle2.0 and used the ‘block join on’ command to connect all the joints generated in Griddle. However, when I cut the model with DFN, I found that the connected joints generated by Griddle were disconnected again. How can I solve this problem? Is it possible to use FISH to connect the specified joints?
Kind Regards,
JLUJYP

Go to this document and scroll down to the “Joint by Contact” section.

Hi,@jhazzard
Thank you for the information provided. The problem I am facing might be solved using the ‘block join-by-contact on’ command in 3DEC 9.0, but unfortunately, I only have a license for 3DEC 7.0, and the current 3DEC 7.0 version does not have the ‘block join-by-contact on’ command. Therefore, I would like to ask if it is possible to achieve the same functionality in 3DEC 7.0 based on the FISH.
Regards,
JLUJYP

Hi @JLUJYP !

You will indeed have to loop through contacts and identify which ones to join, and which ones not to.

In my opinion, joint-set ids are real good candidates for doing so since they are unique, easy to identify and manipulate (small value integers) and that several contacts created with the same cut share the same jset-id.

To illustrate the method, I created a simple model (I do not have Griddle, I did it in 3DEC directly):

block create brick test
block cut joint-set
block cut joint-set dip 60
block cut joint-set dip-dir 45 dip 20


Now, suppose you want to join blocks through joint-set id 2 (the horizontal one), you could use the Fish function below:

fish define join_through_jset(jset_to_join)
    loop foreach local cpnt block.contact.list()
        if block.contact.jset(cpnt)=jset_to_join
            if block.contact.b1(cpnt) != null
                if block.contact.b2(cpnt) != null
                    command
                        block join on range id-list [block.id(block.contact.b1(cpnt))] [block.id(block.contact.b2(cpnt))]
                    end_command
                end_if
            end_if
        end_if
    end_loop
end

Finally, calling [join_through_jset(2)] in 3DEC would bring:

The provided function has drawbacks:

  • of course, it can only work if you can easily identify the joint-set ids generated in Griddle. In the worst case scenario, you could list them in 3DEC prior to adding any new contact.
  • you’ll have to call the function for each joint-set, it will become tedious if you have a lot of joint-sets to parse. In this case, I would recommand modifying the function to deal with a joint-set list rather than a single integer.

Cheers!

Théophile

Hi, @Theophile
Thank you very much for the solution you provided, it has effectively resolved my issue. I apologize for not responding to your message promptly.
Wishing you a pleasant life!
JLUJYP