-
Notifications
You must be signed in to change notification settings - Fork 22
/
ConstructPanel_Cross.tcl
70 lines (63 loc) · 3.12 KB
/
ConstructPanel_Cross.tcl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
##################################################################################################################
# ConstructPanel_Cross.tcl
#
# SubRoutine to construct nodes and rigid elements for the panel zone cruciform model
#
##################################################################################################################
#
# Input Arguments:
#------------------
# Axis Axis number ID
# Floor Floor number ID
# E Young's modulus
# A_Panel Area of rigid link that creates the panel zone
# I_Panel Moment of inertia of rigid link that creates the panel zone
# d_Col Column section depth
# d_Beam Beam section depth
# transfTag Geometric transformation ID
# ShapeID The panel shape ID: 0: No elements are removed
# 2: Left element is removed
# 3: Top element is removed
# 4: Right element is removed
# 23: Left and Top elements are removed
# 34: Right and Top elements are removed
#
# Written by: Dr. Ahmed Elkady, University of Southampton, UK
#
##################################################################################################################
proc ConstructPanel_Cross {Axis Floor X_Axis Y_Floor E A_Panel I_Panel d_Col d_Beam transfTag ShapeID} {
# Construct Panel Node Notation
set NodeCL [expr ($Floor*10+$Axis)*10]; # Grid Line Dummy Node
set NodeID [expr 400000+$Floor*1000+$Axis*100]; # Grid Line Dummy Node
set Node_XY01 [expr $NodeID + 1];
set Node_XY02 [expr $NodeID + 2];
set Node_XY03 [expr $NodeID + 3];
set Node_XY04 [expr $NodeID + 4];
# Construct Panel Element Notation
set P_Elm_100XY00 [expr 7000000 + $Floor*1000 + $Axis*100]; # ID for ZeroLength Panel Element
set P_Elm_100XY01 [expr $P_Elm_100XY00 + 1];
set P_Elm_100XY02 [expr $P_Elm_100XY00 + 2];
set P_Elm_100XY03 [expr $P_Elm_100XY00 + 3];
set P_Elm_100XY04 [expr $P_Elm_100XY00 + 4];
# Construct Panel Node Coordinates
# node [NodeID] [XCoordinate] [YCoordinate]
node $NodeCL $X_Axis $Y_Floor;
node $Node_XY01 [expr $X_Axis] [expr $Y_Floor - $d_Beam/2];
if {$ShapeID != 2 && $ShapeID != 23} {
node $Node_XY02 [expr $X_Axis - $d_Col/2] [expr $Y_Floor];
}
if {$ShapeID != 3 && $ShapeID != 23 && $ShapeID != 34} {
node $Node_XY03 [expr $X_Axis] [expr $Y_Floor + $d_Beam/2];
}
node $Node_XY04 [expr $X_Axis + $d_Col/2] [expr $Y_Floor];
# Construct Panel Element Property
# tag ndI ndJ A_PZ E I_PZ transfTag
element elasticBeamColumn $P_Elm_100XY01 $NodeCL $Node_XY01 $A_Panel $E $I_Panel $transfTag;
if {$ShapeID != 2 && $ShapeID != 23} {
element elasticBeamColumn $P_Elm_100XY02 $NodeCL $Node_XY02 $A_Panel $E $I_Panel $transfTag;
}
if {$ShapeID != 3 && $ShapeID != 23 && $ShapeID != 34} {
element elasticBeamColumn $P_Elm_100XY03 $NodeCL $Node_XY03 $A_Panel $E $I_Panel $transfTag;
}
element elasticBeamColumn $P_Elm_100XY04 $NodeCL $Node_XY04 $A_Panel $E $I_Panel $transfTag;
}