Specifying source node range or group is required for “link create or node join command”

I have tried to connect four different structure element as follows,

However, it is unable to solve the model due to the recursive rigid link. I have intended to attach “D-NODE’ to ”C-NODE“ by creating link chain as like ”A-B-C-D“ but link A-B-C-A is created automatically at the final stage.

So, I think that if you provide source node range for the structure-link-create or structure node join command, I can solve the above problem.

Otherwise, I have to create link by checking all the nodes which sharing a location.

model new
model large-strain off

structure beam create by-line (0.0, 0.0, 0.0) (0.0, 0.0, 1.0) id 1 group 'A'
structure node group 'A-NODE' range structure-type beam group 'A'

structure beam create by-line (0.0, 0.0, 1.0) (0.0, 0.0, 2.0) id 2 group 'B'
structure node group 'B-NODE' range structure-type beam group 'B'

structure node join range-target range group 'A-NODE'

structure beam create by-line (1.0, 0.0, 1.0) (0.0, 0.0, 1.0) id 3 group 'C'
structure beam create by-line (0.0, 0.0, 1.0) (0.0, 1.0, 1.0) id 3 group 'C'
structure node group 'C-NODE' range structure-type beam group 'C'

structure node join range-target range group 'B-NODE'

structure shell create by-quadrilateral (0.0, 0.0, 1.0) (1.0, 0.0, 1.0) (1.0, 1.0, 1.0) (0.0, 1.0, 1.0) size 1 1 id 1 group 'D'

structure node group 'D-NODE' range structure-type shell group 'D'
structure node join range-target range group 'C-NODE'

structure beam property density 2400 young 30E9 poisson 0.2 cross-sectional-area 3E-1 moi-z 4E-3 moi-y 1.406E-2 moi-polar 1.806E-2 range group 'A' group 'B' group 'C' union
structure shell property density 2400 thickness 0.2 isotropic 30E9 0.2 range group 'D'

cycle 0

Finally, I have tried to create final link chain using FISH statement by checking the node group name and create link “structure link create on-nodeid @var target-range range group ‘OO’”.

fish define AA (source_node, target_node)
     loop foreach local pnt struct.node.list
          r_pos = struct.node.pos(pnt)
          name = sel.node.group(pnt)
     end_loop
end
@AA('B', 'A')

However, following error message was encountered.

*** Unable to convert parameter type from Pointer to Node (1) to SELNodeThing Pointer.

I have found the following command instruction, but I cannot figure out the difference between sn and snp?

s := sel.node.group(snp<,slot>)

Argument : snp – node pointer
Argument : sn – structure node pointer

Regards.

Hello,

In this case you are not giving a range phrase after the range-target keyword in the structure node join command. On line 21 it should read:

structure node join range-target group 'D-NODE' range group 'C-NODE'

This will ensure all links with host nodes in group ‘C-NODE’ will look for target nodes only in group ‘D-NODE’

In your FISH function the sel.node.group(pnt) is specific to specialized element types (such as hybrid bolts) in 3DEC.

Thank you dblanksma.
I appreciate your quick response.

Regards.

I just wanted to say that I (and others) have mistakingly using “sel.node…” for FLAC3D, though the proper one should be “struct.node…”. Hopefully some improvement can be done by Itasca.