Zerolength-elem: how to couple two nodes with different DOF?

Forum for OpenSees users to post questions, comments, etc. on the use of the OpenSees interpreter, OpenSees.exe

Moderators: silvia, selimgunay, Moderators

Post Reply
Roy Michel
Posts: 6
Joined: Thu Mar 08, 2007 5:27 am
Location: Trondheim, Norway

Zerolength-elem: how to couple two nodes with different DOF?

Post by Roy Michel »

Hi

I want to couple 2 nodes with a zerolength element which has the uniaxial material PySimple1. The zerolength elements are to couple nodes from quad elements (soil) to beam elements (pile).

The problem is that the quad elements are ndm 2 and ndf 2 while the beam elements are ndm 2 and ndf 3. I get an error message that say that the nodes have different DOF. How can I solve this?

Thanks a lot!

-Roy
enginbal
Posts: 24
Joined: Mon Sep 18, 2006 12:38 pm
Location: Istanbul Technical University
Contact:

Post by enginbal »

Hi Roy,

I had exactly the same problem. please check http://opensees.berkeley.edu/community/ ... f2e09dba16. I have some brick elements to be connected with the frame (stick) elements by means of some zerolength elements. The frame has 6 dof and the brick element has 3 dof, both are in 3D modelling space.

Now, what I did is this :
First of all, you define different dof nodes under different BasicBuilder commands. I use the BasicBuilder command twice. Once at the beginning, once in the middle. Please check the following code.

I have the nodes of the frame elements and nodes of the wall (bricks) elements. I define some dummy nodes (with 3 dof) having exactly the same coordinates with the nodes of the brick elements. I connect frame nodes to these dummy nodes by equalDOF command. (equal DOF node1 node2 1 2 3, See Silvia's suggestion in the ling I gave above). Now I have 3 dof nodes connected to 6dof nodes of the frame. Then, I can easily connect these dummy nodes with the nodes of the wall since they both have the same # of DOF.

This seems longer and more difficult than what you would expect, but it is the only way i could make it run. If you or smb else has any other rather practical solution, I would appriciate to use it.

Ihsan ...

P.S. : Do not get confused with my numbering. Every 1, 2, 3 node number is the node of the wall (i call them gray nodes), 101, 102, 103 numbering belongs to the dummy nodes (intersection between wall and the frame, blue nodes) and 201, 202, 203 are the nodes of the stick frame elements, align with the axis of these RC elements (red nodes).

===================================
#Individual Study with Prof. Fardis
#April 2007, Patras, Greece
#Try constitutive stress-strain failure surface with panel inside the RC frame element
#Model 1.1.3

model BasicBuilder -ndm 3 -ndf 3 # create the wall model, 3-dimensions & 3-DOF

source wall_gray_nodes.tcl # wall nodes and boundary conditions
source intersection_blue_nodes.tcl # intersection nodes coinciding with wall nodes

set displayMode "displayON"

source bricks.tcl # Bricks and their template material

model basic -ndm 3 -ndf 6
#nodes of the surrounding frame
node 201 -.2 0 0
node 206 -.2 0 0.7
node 211 -.2 0 1.4
node 216 -.2 0 2.1
node 221 -.2 0 3.05

node 222 0.7 0 3.05
node 223 1.4 0 3.05
node 224 2.1 0 3.05

node 205 3 0 0
node 210 3 0 0.7
node 215 3 0 1.4
node 220 3 0 2.1
node 225 3 0 3.05


fix 201 1 1 1 1 1 1
fix 205 1 1 1 1 1 1

#connect the gray joints to the blue joints
equalDOF 201 101 1 2 3
equalDOF 206 106 1 2 3
equalDOF 211 111 1 2 3
equalDOF 216 116 1 2 3
equalDOF 221 121 1 2 3
equalDOF 205 105 1 2 3
equalDOF 210 110 1 2 3
equalDOF 215 115 1 2 3
equalDOF 220 120 1 2 3
equalDOF 225 125 1 2 3

equalDOF 222 122 1 2 3
equalDOF 223 123 1 2 3
equalDOF 224 124 1 2 3

fixY 0 0 1 0 0 0 0

source sections.tcl

# elem_tag nodei ndj mat
element zeroLength 101 101 1 -mat 3 -dir 1
element zeroLength 106 106 6 -mat 3 -dir 1
element zeroLength 111 111 11 -mat 3 101 -dir 1 3
element zeroLength 116 116 16 -mat 3 101 -dir 1 3
element zeroLength 121 121 21 -mat 3 -dir 1

element zeroLength 105 105 5 -mat 3 -dir 1
element zeroLength 110 110 10 -mat 3 -dir 1
element zeroLength 115 115 15 -mat 3 101 -dir 1 3
element zeroLength 120 120 20 -mat 3 101 -dir 1 3
element zeroLength 125 125 25 -mat 3 -dir 1

element zeroLength 122 122 22 -mat 101 3 -dir 1 3
element zeroLength 123 123 23 -mat 101 3 -dir 1 3
element zeroLength 124 124 24 -mat 3 -dir 3

geomTransf Linear 1 1 0 1
# Number of integration points along length of element
set np 5
# Create the coulumns using Beam-column elements
# tag ndI ndJ nsecs secID transfTag
element nonlinearBeamColumn 1001 201 206 $np 3 1
element nonlinearBeamColumn 1002 206 211 $np 3 1
element nonlinearBeamColumn 1003 211 216 $np 3 1
element nonlinearBeamColumn 1004 216 221 $np 3 1
element nonlinearBeamColumn 1005 205 210 $np 3 1
element nonlinearBeamColumn 1006 210 215 $np 3 1
element nonlinearBeamColumn 1007 215 220 $np 3 1
element nonlinearBeamColumn 1008 220 225 $np 3 1

geomTransf Linear 2 1 0 1
# Create the beams using Beam-column elements
# tag ndI ndJ nsecs secID transfTag
element nonlinearBeamColumn 1009 221 222 $np 4 2
element nonlinearBeamColumn 1010 222 223 $np 4 2
element nonlinearBeamColumn 1011 223 224 $np 4 2
element nonlinearBeamColumn 1012 224 225 $np 4 2

source analysis.tcl
Dr. Ihsan Engin BAL
Researcher, EUCENTRE, Pavia, Italy
Roy Michel
Posts: 6
Joined: Thu Mar 08, 2007 5:27 am
Location: Trondheim, Norway

Post by Roy Michel »

Hi, Engin

Thanks a lot! I actually figured out the same thing! But now I am certain that this is correct to do! :D

I defined 2DOF dummy nodes at the same coordinate as the pile-nodes (3DOF). I then connected the dummy nodes (2DOF) with the soil nodes (2DOF) by using zerolength elements. Finally I defined that the dummy-nodes should have the same displacement as the pile-nodes using the equalDOF-command. That worked out just fine! :D

-Roy
Post Reply