I am trying to simulate rockbolt element connected to a faceplate in UDEC. The faceplate is constructed with the liner elements. I am trying to connect the rockbolt last node with the center node of the liner element using the connect keyword. However, when I am running the model, the connection is separated. Is there any way I can fix it? Please see the attached image and code for that.
If you have properly connected the rockbolt to the structural liner, they cannot separate.
The begin coordinate should correspond with the location of one of the liner nodes.
After defining the rockbolt with the connect keyword, you should use block struct rock list node.
One of the nodes of the rockbolt should have the id of one of the liner nodes.
The coordinates should match within the corner-round-length tolerance.
That’s what I am doing. I computed the center coordinates of the liner element and assigned them as the starting and ending coordinates of the rockbolts. Still, the one end didn’t connect. Could you please check the attached text file if I am doing something wrong?
By the way, I have a liner (face plate) on both ends of the rockbolt and I want to connect them.
The coordinates of the begin end of the rockbolt should coincide with the coordinates of one of the liner nodes, not the center. It is only the lumped mass nodes that are shared.
I don’t believe you can connect two ends. The logic is not set up to do this. The second connection could be done by inserting the node INDEX (not id) of the beam element node into the rockbolt element data structure.
Thank you for your help. I am computing the coordinate of the center node of the liner element.
Could you please provide an example to insert the node index of the liner into the rockbolt element data structure to connect the faceplate on both ends?
block tol corner-round-length .001
block cr test
block cut crack 0 6 10 6
block zone gen edge 1
block struc beam property mat 1 young 200E9 poisson 0.3 thickness 0.006 dens 7800 yield-compression 30 yield-tension 3 …
coupling-cohesion 0 coup-tens 0 coupling-friction 20.0 coupli-stiff-normal 5E13 cou-sti-sh 5E13 width 0.1 shape-factor 0.8333
block struct liner create by-end-points begin 0,0 end 10,0 mat-beam 1
block struct rockbolt create begin 0 5.625 end 10 5.635 segment 10 mat 1 connect
;locate liner node at 10,5.625
block struct liner list
; node id = 34, index = 42855
; locate rockbolt element index at right end
block struct rockbolt list
; rockbolt element id = 50, index = 45704
program call “str.fin”
fish define replace
node_index = index(42855)
rockbolt_index = index(45704)
imem(rockbolt_index+$SELN2) = node_index
block struct rockbolt list element
With this, I connected the last node of the rockbolt to the node of the liner. When I printed the element list, I could see the change in the node number between the last element of the rockbolt, so I guess it’s connected. However, I got an error when I ran my model (see the image below). I still have node 122 which I connected to the liner node.
The warning means that you have not defined default properties for new contacts that may form while cycling.
The error means you have not defined a required property (probably Young’s modulus) for one of the structural element types.
I have defined the properties of both structural elements (rockbolt and liner) that I am using. When I am not connecting the last end of the rockbolt to a liner node using the data structure, my model is running without any warnings. However after the connection, the node ID of the last element of the rockbolt changes to the beam node. However, the initial last node of the rockbolt before joining it to the beam node is still present when I printed the bolt node ID and this node has not been assigned any properties, even though I defined the properties for both rockbolt and liner. I tried the data structure to assign the properties for this node (ID-122) but didn’t work. Is there any way I can assign a stiffness property for a rockbolt node?
The way to address this is to remove the orphan node from the list. However in this case the orphaned node is the last node (but the first node in the linked list). FISH will not allow to to change block.struct.node.head. This is a global FISH function and is read only.
So, we need a hack here:
; create a dummy rockbolt to move the orphaned node off the end of the linked list
block struct rockbolt create begin 1 1 end 2 1 segment 1 mat 1
;now jump the linked list over the orphaned node
fish define remove_orphan
previous_node = index(47534)
node_index = index(47210)
xmem(previous_node+$SNDNEXT) = node_index
; now remove the dummy rockbolt
block struct rockbolt delete range pos-x 0 10 pos-y 0 2