problem in define Rigid diaphragm in 3d brace frame

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

Moderators: silvia, selimgunay, Moderators

Post Reply
jalil
Posts: 1
Joined: Sun Dec 25, 2011 8:48 am
Location: tehran

problem in define Rigid diaphragm in 3d brace frame

Post by jalil »

hi all
we wants to model 3d brace frame with pin conection in beam and brace with rigid diaphragm in floors.
when we use equal dof for pin conection and rigid diaphragm for floor and analyse the model , column seprate from beam .
please help us
thank you
Djeras
Posts: 4
Joined: Wed Oct 23, 2013 1:35 pm
Location: Técnico Lisboa

Re: problem in define Rigid diaphragm in 3d brace frame

Post by Djeras »

Hello !
I´m having the same problem here, how to model de pins. Is there a solution ? Plzz Help
The structure is as it follows:
# --------------------------------------------------------------------------------------------------
# 3D model of 1-Story Concentric Braced Frame - STR7 - Static analysis
#---------------------------------------------------------------------------------------------------
# Braces are defined with 10 force-based beam-column elements (with 3 IPs)
# Geometric imperfection of braces is parabolic in shape, out-of-plane, with the inital imperfection in the middle of the brace of Leff/1000. (Definition of nodes #follows Vesna´s same definition on the SCBF file.
# Beams and columns are also modeled with force-based beam-column elements

puts "All has Begun"
wipe; # clear memory of past model definitions
model BasicBuilder -ndm 3 -ndf 6; # Define the model builder, ndm = #dimension, ndf = #dofs
source WSection3D.tcl; # procedure for creating standard steel W section
source CHS3D.tcl; # procedure for creating CHS section --- Braces Section
source RotSpring3D.tcl;
source Enodes_FrXX.tcl;
source Enodes_FrZZ.tcl;


# procedure for creating Hinges in the Frames . No need to differentiate from Frame in Z direction or from Frame in X Direction (...)
# (...) (cont.) Why ? `Cause it´s in terms of local axes and not in global axes !!!!

# Display of RotSpring3D.tcl ####
proc rotspring3D {eleID nodeR nodeC matID_HINGE matID_Rot} {

element zeroLength $eleID $nodeR $nodeC -mat $matID_Rot $matID_HINGE $matID_HINGE -dir 4 5 6

}


###################################################################################################
# Define Building Geometry, Nodes, and Constraints
###################################################################################################

# #define structure-geometry parameters
set H_Piso1 4.5;
set X_6m 6;
set Z_7m 7;
set Z_4m 4;

# brace effective length, number of elements per brace, and initial imperfection
set pi [expr 2.0*asin(1.0)]
puts pi
set alpha_FR12 [expr {48.37*$pi/180}]; set beta_FR12 [ expr {41.19*$pi/180}]; #Frame1&2 angles of braces----> Alpha for Floor 1 _ Beta for Floor 2&3
set alpha_FR34 [expr {36.87*$pi/180}]; set beta_FR34 [ expr {30.26*$pi/180}]; #Frame3&4 angles of braces----> Alpha for Floor 1 _ Beta for Floor 2&3
set noEle 10; # number of elements per brace
set p_ratio 1000.; #coresponds to 0.05% of the effective lenght

#Frame 1 & Frame 2
#Floor1
set Leff1_FrameZ [expr {sqrt( pow($Z_4m,2) + pow($H_Piso1,2))} ]; #effective lenght of brace in Z direction at Floor 1
puts "Length of Floor1 Braces in Z Direction is $Leff1_FrameZ"
set p1_Z [expr 1./$p_ratio*$Leff1_FrameZ]; #imperfection of the brace

#Frame 3 & Frame 4
#Floor1
set Leff1_FrameX [expr {sqrt( pow($X_6m,2) + pow($H_Piso1,2))} ]; #effective lenght of brace in X direction at Floor 1
puts "Length of Floor1 Braces in X Direction is $Leff1_FrameX"
set p1_X [expr {1./$p_ratio*$Leff1_FrameX} ]; #imperfection of the brace

# floor masses ( to be considered in the CM)
set g 9.81; # acceleration due to gravity


# Define nodes and assign masses to beam-column intersections of frame
# command: node nodeID xcoord ycoord -mass mass_dof1 mass_dof2 mass_dof3
#FRAME 1
node 1 0.0 0.0 $Z_7m; node 9 0.0 0.0 $Z_7m; node 10 0.0 0.0 $Z_7m; #Nó & respectivos equalDOF
node 2 0.0 0.0 [expr {$Z_7m + $Z_4m}]; node 11 0.0 0.0 [expr {$Z_7m + $Z_4m}]; node 12 0.0 0.0 [expr {$Z_7m + $Z_4m}];
node 25 0.0 $H_Piso1 $Z_7m; node 26 0.0 $H_Piso1 $Z_7m; node 27 0.0 $H_Piso1 $Z_7m;
node 30 0.0 $H_Piso1 [expr {$Z_7m + $Z_4m}]; node 28 0.0 $H_Piso1 [expr {$Z_7m + $Z_4m}]; node 29 0.0 $H_Piso1 [expr {$Z_7m + $Z_4m}];

#FRAME 2
node 3 [expr {5*$X_6m}] 0.0 $Z_7m; node 13 [expr {5*$X_6m}] 0.0 $Z_7m; node 14 [expr {5*$X_6m}] 0.0 $Z_7m; #Nó & respectivos equalDOF
node 4 [expr {5*$X_6m}] 0.0 [expr {$Z_7m + $Z_4m}]; node 15 [expr {5*$X_6m}] 0.0 [expr {$Z_7m + $Z_4m}]; node 16 [expr {5*$X_6m}] 0.0 [expr {$Z_7m + $Z_4m}];
node 31 [expr {5*$X_6m}] $H_Piso1 $Z_7m; node 32 [expr {5*$X_6m}] $H_Piso1 $Z_7m; node 33 [expr {5*$X_6m}] $H_Piso1 $Z_7m;
node 36 [expr {5*$X_6m}] $H_Piso1 [expr {$Z_7m + $Z_4m}]; node 34 [expr {5*$X_6m}] $H_Piso1 [expr {$Z_7m + $Z_4m}]; node 35 [expr {5*$X_6m}] $H_Piso1 [expr {$Z_7m + $Z_4m}];

#FRAME 3
node 5 [expr {2*$X_6m}] 0 0; node 17 [expr {2*$X_6m}] 0 0; node 18 [expr {2*$X_6m}] 0 0; #Nó & respectivos equalDOF
node 6 [expr {3*$X_6m}] 0 0; node 19 [expr {3*$X_6m}] 0 0; node 20 [expr {3*$X_6m}] 0 0;
node 37 [expr {2*$X_6m}] $H_Piso1 0; node 38 [expr {2*$X_6m}] $H_Piso1 0; node 39 [expr {2*$X_6m}] $H_Piso1 0;
node 40 [expr {2*$X_6m + 2}] $H_Piso1 0; node 41 [expr {2*$X_6m + 4}] $H_Piso1 0; # Nodes for Concentrated Load on the beam
node 44 [expr {3*$X_6m}] $H_Piso1 0; node 42 [expr {3*$X_6m}] $H_Piso1 0; node 43 [expr {3*$X_6m}] $H_Piso1 0;

#FRAME 4
node 7 [expr {2*$X_6m}] 0 [expr {2*$Z_7m + $Z_4m}]; node 21 [expr {2*$X_6m}] 0 [expr {2*$Z_7m + $Z_4m}]; node 22 [expr {2*$X_6m}] 0 [expr {2*$Z_7m + $Z_4m}]; #Nó & respectivos equalDOF
node 8 [expr {3*$X_6m}] 0 [expr {2*$Z_7m + $Z_4m}]; node 23 [expr {3*$X_6m}] 0 [expr {2*$Z_7m + $Z_4m}]; node 24 [expr {3*$X_6m}] 0 [expr {2*$Z_7m + $Z_4m}];
node 45 [expr {2*$X_6m}] $H_Piso1 [expr {2*$Z_7m + $Z_4m}]; node 46 [expr {2*$X_6m}] $H_Piso1 [expr {2*$Z_7m + $Z_4m}]; node 47 [expr {2*$X_6m}] $H_Piso1 [expr {2*$Z_7m + $Z_4m}];
node 48 [expr {2*$X_6m + 2}] $H_Piso1 [expr {2*$Z_7m + $Z_4m}]; node 49 [expr {2*$X_6m + 4}] $H_Piso1 [expr {2*$Z_7m + $Z_4m}]; # Nodes for Concentrated Load on the beam
node 52 [expr {3*$X_6m}] $H_Piso1 [expr {2*$Z_7m + $Z_4m}]; node 50 [expr {3*$X_6m}] $H_Piso1 [expr {2*$Z_7m + $Z_4m}]; node 51 [expr {3*$X_6m}] $H_Piso1 [expr {2*$Z_7m + $Z_4m}];


puts "General Nodes defined";
#----------------------------------------------------------

# Define EXTRA Nodes along the braces

# ### Extra Nodes Convention ###
# proc Enodes_FrZZ { orient shift Xi Yi Zi Leff p noEle alpha}

# ####################################################################
# ############################ FRAME 1 ##############################
# ####################################################################

# Nodes of the LEFT brace of storey 1
set Node1000 1000
#Coordinates of the initial node ! Node 10
set Xie 0.0;
set Yie 0.0;
set Zie $Z_7m;

Enodes_FrZZ "Left" $Node1000 0.0 0.0 $Z_7m $Leff1_FrameZ $p1_Z $noEle $alpha_FR12


# Nodes of the right brace of storey 1
set Node1100 1100
#Coordinates of the initial node ! Node 11
set Xid 0.0;
set Yid 0.0;
set Zid [expr {$Z_4m + $Z_7m}];

Enodes_FrZZ "Right" $Node1100 0.0 0.0 [expr {$Z_4m + $Z_7m}] $Leff1_FrameZ $p1_Z $noEle $alpha_FR12



# ####################################################################
# ############################ FRAME 2 ##############################
# ####################################################################

# Nodes of the LEFT brace of storey 1
set Node1200 1200
#Coordinates of the initial node ! Node 14
set Xie [expr {5*$X_6m}];
set Yie 0.0;
set Zie $Z_7m;

Enodes_FrZZ "Left" $Node1200 [expr {5*$X_6m}] 0.0 $Z_7m $Leff1_FrameZ $p1_Z $noEle $alpha_FR12



# Nodes of the RIGHT brace of storey 1


set Node1300 1300
#Coordinates of the initial node ! Node 15
set Xid [expr {5*$X_6m}];
set Yid 0.0;
set Zid [expr {$Z_4m+$Z_7m}];

Enodes_FrZZ "Right" $Node1300 [expr {5*$X_6m}] 0.0 [expr {$Z_4m + $Z_7m}] $Leff1_FrameZ $p1_Z $noEle $alpha_FR12


# ### Extra Nodes Convention ###
# proc Enodes_FrXX { orient shift Xi Yi Zi Leff p noEle alpha}

# ####################################################################
# ############################ FRAME 3 ##############################
# ####################################################################



# Nodes of the LEFT brace of storey 1

set Node1400 1400
#Coordinates of the initial node ! Node 18
set Xie [expr {2*$X_6m}];
set Yie 0.0;
set Zie 0.0;

Enodes_FrXX "Left" $Node1400 [expr {2*$X_6m}] 0.0 0.0 $Leff1_FrameX $p1_X $noEle $alpha_FR34



# Nodes of the RIGHT brace of storey 1
set Node1500 1500
#Coordinates of the initial node ! Node 19
set Xid [expr {3*$X_6m}];
set Yid 0.0;
set Zid 0.0;

Enodes_FrXX "Right" $Node1500 [expr {3*$X_6m}] 0.0 0.0 $Leff1_FrameX $p1_X $noEle $alpha_FR34



# ####################################################################
# ############################ FRAME 4 ##############################
# ####################################################################

# Nodes of the LEFT brace of storey 1
set Node1600 1600
#Coordinates of the initial node ! Node 22
set Xie [expr {2*$X_6m}];
set Yie 0.0;
set Zie [expr {2*$Z_7m + $Z_4m}];


Enodes_FrXX "Left" $Node1600 [expr {2*$X_6m}] 0.0 [expr {2*$Z_7m + $Z_4m}] $Leff1_FrameX $p1_X $noEle $alpha_FR34


# Nodes of the RIGHT brace of storey 1
set Node1700 1700
#Coordinates of the initial node ! Node 23
set Xid [expr {3*$X_6m}];
set Yid 0.0;
set Zid [expr {2*$Z_7m + $Z_4m}];

Enodes_FrXX "Right" $Node1700 [expr {3*$X_6m}] 0.0 [expr {2*$Z_7m + $Z_4m}] $Leff1_FrameX $p1_X $noEle $alpha_FR34


puts "Finished defining extra NODES along all the Braces ..."


# assign boundary conditions
# ---------------------------------------------------------------

# Encastramentos das colunas.
fix 1 1 1 1 1 1 1
fix 2 1 1 1 1 1 1
fix 3 1 1 1 1 1 1
fix 4 1 1 1 1 1 1
fix 5 1 1 1 1 1 1
fix 6 1 1 1 1 1 1
fix 7 1 1 1 1 1 1
fix 8 1 1 1 1 1 1

# define Rigid Floor Diaphragm
set RigidDiaphragm ON ; # options: ON, OFF. specify this before the analysis parameters are set the constraints are handled differently

# Node of CM _ Master Node for Rigid Diaphragm
node 100000 [expr {$X_6m*2 + $X_6m/2}] $H_Piso1 [expr {$Z_7m + $Z_4m/2}]

#Constraints for rigid diaphragm master nodes
# tag Dx Dy Dz Rx Ry Rz
fix 100000 0 1 0 1 0 1

#Define rigid diaphragm multi-point constrains
# NormalDir master slaves
rigidDiaphragm 2 100000 25 30 31 36 37 44 45 52 ;


# Define constraints for pinned beam-to-column connection & brace-to-column connection


# ### Columns _ GroundFloor Pins
equalDOF 1 9 1 2 3 4 ; # Frame 1
equalDOF 2 12 1 2 3 4
equalDOF 3 13 1 2 3 4 ; # Frame 2
equalDOF 4 16 1 2 3 4
equalDOF 5 17 1 2 3 4 ; # Frame 3
equalDOF 6 20 1 2 3 4 ;
equalDOF 7 21 1 2 3 4 ; # Frame 4
equalDOF 8 24 1 2 3 4 ;

# ### Braces _ Pins at GroundFloor Level
equalDOF 1 10 1 2 3 4; # Frame 1
equalDOF 2 11 1 2 3 4
equalDOF 3 14 1 2 3 4; # Frame 2
equalDOF 4 15 1 2 3 4
equalDOF 5 18 1 2 3 4; # Frame 3
equalDOF 6 19 1 2 3 4
equalDOF 7 22 1 2 3 4; # Frame 4
equalDOF 8 23 1 2 3 4

# ### Beams _ Pins at First Floor
equalDOF 25 27 1 2 3 4 ; # Frame 1
equalDOF 30 28 1 2 3 4
equalDOF 31 33 1 2 3 4 ; # Frame 2
equalDOF 36 34 1 2 3 4 ;
equalDOF 37 39 1 2 3 4 ; # Frame 3
equalDOF 44 42 1 2 3 4 ;
equalDOF 45 47 1 2 3 4 ; # Frame 4
equalDOF 52 50 1 2 3 4 ;

# ### Braces _ Down Pins at 1st Floor
equalDOF 25 26 1 2 3 4; # Frame 1
equalDOF 30 29 1 2 3 4
equalDOF 31 32 1 2 3 4; # Frame 2
equalDOF 36 35 1 2 3 4
equalDOF 37 38 1 2 3 4; # Frame 3
equalDOF 44 43 1 2 3 4
equalDOF 45 46 1 2 3 4; # Frame 4
equalDOF 52 51 1 2 3 4

puts "Constraints Defined!"

# ##################################################################################################
# Define Materials & Sections
# ##################################################################################################

# Define Material for BEAMS and COLUMNS
set matID_BC 1
set Fy 275000.; # Yield Stress
set Es 210000000.; # Steel Young's Modulus
set nu 0.3; # Poisson's ratio
set Gs [expr $Es/2./[expr 1.+$nu]]; # Torsional stiffness Modulus
set Hiso 0; # Isotropic hardening Modulus
set niuh 0.01; # Strain Hardning Parameter
set Hkin [expr ($Es*$niuh)/(1-$niuh)]; # Kinematic hardening Modulus

# tag
uniaxialMaterial Hardening $matID_BC $Es $Fy $Hiso $Hkin;

# Define Material for BRACES
set matID_Brace 2
set Fy_b 355000.; # Yield Stress
set nu_b 0.3; # Poisson's ratio
set Gs_b [expr $Es/2./[expr 1.+$nu_b]]; # Torsional stiffness Modulus

uniaxialMaterial Steel02 $matID_Brace $Fy_b $Es $niuh 20 0.925 0.15 0.0005 0.01 0.0005 0.01

# --------


set n1 45000.
set n2 45000.
set n3 45000.
set n4 45000.

# Define Material for dir 1 2 3 4 (local axis) ___ FRAMES Direction ZZ
set matID_Rot_ZZ 3
set E_ROT_ZZ [expr {1.0*$n1}];
uniaxialMaterial Elastic $matID_Rot_ZZ $E_ROT_ZZ

# Define Material for dir 1 2 3 4 (local axis) ___ FRAMES Direction XX
set matID_Rot_XX 4
set E_ROT_XX [expr {1.0*$n2}];
uniaxialMaterial Elastic $matID_Rot_XX $E_ROT_XX

# Define Material for simulating pins in direction 5 & 6 (local axis) ___ FRAMES Direction ZZ
set matID_HINGE_ZZ 5
set E_HINGE_ZZ [expr {1.0/$n3}];
uniaxialMaterial Elastic $matID_HINGE_ZZ $E_HINGE_ZZ

# Define Material for simulating pins in direction 5 & 6 (local axis) ___ Direction XX
set matID_HINGE_XX 6
set E_HINGE_XX [expr {1.0/$n4}];
uniaxialMaterial Elastic $matID_HINGE_XX $E_HINGE_XX

puts "Both Beams & 2 Braces Hinges have been defined\n"


# #######################################################
# ########## DEFINE ELEMENTS AND SECTIONS #########
# #######################################################
# Definition of the brace parameters

set gamma 77

#Brace CHS139.7x3.2
set BraceSecTag1 10
set ri_1 0.06665; # inner radius of the section, only for hollow sections
set ro_1 0.06985; # overall (outer) radius of the section
set A_Brace1 13.7e-4
set W_Brace1 [ expr {$gamma*$A_Brace1} ]; # Weight per unit length

#Brace CHS139.7x4.0
set BraceSecTag2 20
set ri_2 0.06585
set ro_2 0.06985
set A_Brace2 17.1e-4
set W_Brace2 [ expr {$gamma*$A_Brace2} ]; # Weight per unit length

#Brace CHS139.7x5.0
set BraceSecTag3 30
set ri_3 0.06485
set ro_3 0.06985
set A_Brace3 21.2e-4
set W_Brace3 [ expr {$gamma*$A_Brace2} ]

#Brace CHS139.7x6.3
set BraceSecTag4 40
set ri_4 0.06355
set ro_4 0.06985
set A_Brace4 26.4e-4
set W_Brace4 [ expr {$gamma*$A_Brace4} ]; # Weight per unit length

#Brace CHS139.7x8.0
set BraceSecTag5 50
set ri_5 0.06185
set ro_5 0.06985
set A_Brace5 33.1e-4
set W_Brace5 [ expr {$gamma*$A_Brace5} ]; # Weight per unit length


# set SecTagTorsionBrace1 70
# set SecTagTorsionBrace2 71
# set SecTagTorsionBrace3 72
# set SecTagTorsionBrace4 73
# set SecTagTorsionBrace5 74


set jbrace1 6.40E-06 ; # braces section torsional factor
set jbrace2 7.86E-06
set jbrace3 9.61E-06
set jbrace4 1.177E-05
set jbrace5 1.441E-05

# ############ Valores sujeitos a ser iterados !!!! ############

set nfR 4; # number of radial divisions (number of "rings")
set nfT 8; # number of theta divisions in the core (number of "wedges")



# Defining CHS139.7x3.2
CHS3D $BraceSecTag1 $matID_Brace $BraceSecTag1 $ri_1 $ro_1 $jbrace1 $nfR $nfT
# Defining CHS139.7x4.0
CHS3D $BraceSecTag2 $matID_Brace $BraceSecTag2 $ri_2 $ro_2 $jbrace2 $nfR $nfT
# Defining CHS139.7x5.0
CHS3D $BraceSecTag3 $matID_Brace $BraceSecTag3 $ri_3 $ro_3 $jbrace3 $nfR $nfT
# Defining CHS139.7x6.3
CHS3D $BraceSecTag4 $matID_Brace $BraceSecTag4 $ri_4 $ro_4 $jbrace4 $nfR $nfT
# Defining CHS139.7x8.0
CHS3D $BraceSecTag5 $matID_Brace $BraceSecTag5 $ri_5 $ro_5 $jbrace5 $nfR $nfT

puts "Braces are defined\n"



# ### WSection3D { secID matID matTorsion d bf tf tw nfdw nftw nfbf nftf J}

set nfdw 100; # number of fibers along dw
set nftw 3; # number of fibers along tw
set nfbf 100; # number of fibers along bf
set nftf 9; # number of fibers along tf

# Definition of the column parameters
set ColSecTagHEB200 60
set dc200 0.20
set bfc200 0.20
set tfc200 0.015
set twc200 0.009
set A_HEB200 78.08e-4
set W_HEB200 [ expr {$gamma*$A_HEB200} ]; # Weight per lenght


set ColSecTagHEB300 70
set dc300 0.30
set bfc300 0.30
set tfc300 0.019
set twc300 0.011
set A_HEB300 149.08e-4
set W_HEB300 [ expr {$gamma*$A_HEB300} ]; # Weight per lenght

# Definition of the beams parameters _ Assign a tag number to the beam section tag
set BeamSecTagIPE300 80
set db300 0.300
set bfb300 0.150
set tfb300 0.0107
set twb300 0.0071
set A_IPE300 53.81e-4
set W_IPE300 [ expr {$gamma*$A_IPE300} ]; # Weight per lenght


set BeamSecTagIPE330 90
set db330 0.330
set bfb330 0.160
set tfb330 0.0115
set twb330 0.0075
set A_IPE330 62.61e-4
set W_IPE330 [ expr {$gamma*$A_IPE330} ]; # Weight per lenght


set BeamSecTagIPE360 100
set db360 0.360
set bfb360 0.170
set tfb360 0.0127
set twb360 0.008
set A_IPE360 72.73e-4
set W_IPE360 [ expr {$gamma*$A_IPE360} ]; # Weight per lenght


# set SecTagTorsionHEB200 75
# set SecTagTorsionHEB300 76
# set SecTagTorsionIPE300 77
# set SecTagTorsionIPE330 78
# set SecTagTorsionIPE360 79

set jHEB200 5.928E-07 ; # column section torsional factor
set jHEB300 1.85E-06
set jIPE300 2.012E-07; # beam section torsional factor
set jIPE330 2.815E-07
set jIPE360 3.732E-07;

WSection3D $ColSecTagHEB200 $matID_BC $ColSecTagHEB200 $dc200 $bfc200 $tfc200 $twc200 $nfdw $nftw $nfbf $nftf $jHEB200; # HEB200
WSection3D $ColSecTagHEB300 $matID_BC $ColSecTagHEB300 $dc300 $bfc300 $tfc300 $twc300 $nfdw $nftw $nfbf $nftf $jHEB300; # HEB300
WSection3D $BeamSecTagIPE300 $matID_BC $BeamSecTagIPE300 $db300 $bfb300 $tfb300 $twb300 $nfdw $nftw $nfbf $nftf $jIPE300; # IPE300
WSection3D $BeamSecTagIPE330 $matID_BC $BeamSecTagIPE330 $db330 $bfb330 $tfb330 $twb330 $nfdw $nftw $nfbf $nftf $jIPE330; # IPE330
WSection3D $BeamSecTagIPE360 $matID_BC $BeamSecTagIPE360 $db360 $bfb360 $tfb360 $twb360 $nfdw $nftw $nfbf $nftf $jIPE360; # IPE360

puts "All SECTIONS have been DEFINED"

# ##########################################################
# ################# Transformation ################
# ##########################################################
# set up geometric transformations of element
# separate Transformation between columns, beams and braces. in case of P-Delta analysis for columns

# in 3D model, assign vector vecxz
# associate a tag to column transformation _ We´ve got columns positioned differently in the structure
set ColTransfTagXX 1; #XX is the GLOBAL AXIS parallel to the weak axis
set ColTransfTagZZ 2; #ZZ is the GLOBAL AXIS parallel to the weak axis
set BeamXXTransfTag 3; # associate a tag to BeamXX transformation
set BeamZZTransfTag 4; # associate a tag to BeamZZ transformation (good practice to keep col and beam separate)
set LEFTBraceBXXTransfTag 5; # associate a tag to LEFT braces transformation- beams direction (xx)
set LEFTBraceBZZTransfTag 6; # associate a tag to LEFT braces transformation- beams direction (zz)
#set RIGHTBraceBXXTransfTag 7; # associate a tag to RIGHT braces transformation- beams direction (xx)
#set RIGHTBraceBZZTransfTag 8; # associate a tag to RIGHT braces transformation- beams direction (zz)

# #################### Transf options, Linear or PDelta or Corotational
set ColTransfType PDelta ; ## Considers second-order P-Delta Effects. NOTE: PDelta effects don´t include small PDelta effects
set BraceTransfType Corotational; ## Corotational can be used in large displacement - small strain __ BRACES ONLY

geomTransf $ColTransfType $ColTransfTagXX 0 0 1 ; # only columns can have PDelta effects (gravity effects)
geomTransf $ColTransfType $ColTransfTagZZ -1 0 0 ; # vecxZ ----> It´s the Z LOCAL AXIS that has to be considered parallel to the respective GLOBAL AXIS
#FEITO !!!!
# vecxZ
geomTransf Linear $BeamXXTransfTag 0 0 -1; # Same positive as positive way of Global Axis
geomTransf Linear $BeamZZTransfTag 1 0 0; # FEITO !!!!


# ###### Braces of the X-designed Frames ######
geomTransf $BraceTransfType $LEFTBraceBXXTransfTag 0 0 -1; ### Braces in FRAME X Direction ###
geomTransf $BraceTransfType $LEFTBraceBZZTransfTag 1 0 0; ### Braces in FRAME Z Direction ###

puts "Transformations have been defined"

# ############################################
# ########## Connectivity ##############
# ############################################



set np 7;

# ###### COLUMNS ######
# eleID convention: "1i", 1 = COLUMN, i=floor, #
# eleTag iNode jNode np secTag transfTag
element nonlinearBeamColumn 110 9 25 $np $ColSecTagHEB300 $ColTransfTagZZ; # LEFT column Frame 1
element nonlinearBeamColumn 111 12 30 $np $ColSecTagHEB300 $ColTransfTagZZ; # RIGHT column Frame 1
element nonlinearBeamColumn 112 13 31 $np $ColSecTagHEB300 $ColTransfTagZZ; # LEFT column Frame 2
element nonlinearBeamColumn 113 16 36 $np $ColSecTagHEB300 $ColTransfTagZZ; # RIGHT column Frame 2

element nonlinearBeamColumn 114 17 37 $np $ColSecTagHEB300 $ColTransfTagXX; # LEFT column Frame 3
element nonlinearBeamColumn 115 20 44 $np $ColSecTagHEB300 $ColTransfTagXX; # RIGHT column Frame 3
element nonlinearBeamColumn 116 21 45 $np $ColSecTagHEB300 $ColTransfTagXX; # LEFT column Frame 4
element nonlinearBeamColumn 117 24 52 $np $ColSecTagHEB300 $ColTransfTagXX; # RIGHT column Frame 4

puts "Columns Defined"

# ###### BEAMS ######
# eleID convention: "5i", 5 = BEAM, i=floor, #
# eleTag iNode jNode np secTag transfTag
element nonlinearBeamColumn 510 27 28 $np $BeamSecTagIPE330 $BeamZZTransfTag; # Beam Frame 1 _ Floor 1

element nonlinearBeamColumn 511 33 34 $np $BeamSecTagIPE330 $BeamZZTransfTag; # Beam Frame 2 _ Floor 1

element nonlinearBeamColumn 512 39 40 $np $BeamSecTagIPE360 $BeamXXTransfTag; # Beams Frame 3 _ Floor 1
element nonlinearBeamColumn 513 40 41 $np $BeamSecTagIPE360 $BeamXXTransfTag;
element nonlinearBeamColumn 514 41 42 $np $BeamSecTagIPE360 $BeamXXTransfTag;

element nonlinearBeamColumn 515 47 48 $np $BeamSecTagIPE360 $BeamXXTransfTag; # Beams Frame 4 _ Floor 1
element nonlinearBeamColumn 516 48 49 $np $BeamSecTagIPE360 $BeamXXTransfTag;
element nonlinearBeamColumn 517 49 50 $np $BeamSecTagIPE360 $BeamXXTransfTag;

puts "Beams Defined"

# ###### BRACES ######


# ### FRAME 1 ###
# ### Storey 1 ###
# ## LEFT Brace ###
set shift_1 1000

element nonlinearBeamColumn [expr {$shift_1 + 1}] 10 [expr {$shift_1 + 1}] $np $BraceSecTag5 $LEFTBraceBZZTransfTag; # -iter $maxIter $tol; # First Element
for { set i 2 } {$i <= 9 } { incr i } {

element nonlinearBeamColumn [expr {$shift_1 + $i}] [expr {$shift_1 + $i - 1}] [expr {$shift_1 + $i}] $np $BraceSecTag5 $LEFTBraceBZZTransfTag ; # -iter $maxIter $tol; # LEFT BRACE _ Floor 1
}
element nonlinearBeamColumn [expr {$shift_1 + 10}] [expr {$shift_1 + 9}] 29 $np $BraceSecTag5 $LEFTBraceBZZTransfTag; # -iter $maxIter $tol; # Last Element



# ## RIGHT Brace ###
set shift_2 1100

element nonlinearBeamColumn [expr {$shift_2 + 1}] 11 [expr {$shift_2 + 1}] $np $BraceSecTag5 $LEFTBraceBZZTransfTag; # -iter $maxIter $tol; # First Element
for { set i 2 } {$i <= 9 } { incr i } {

element nonlinearBeamColumn [expr {$shift_2 + $i}] [expr {$shift_2 + $i - 1}] [expr {$shift_2 + $i}] $np $BraceSecTag5 $LEFTBraceBZZTransfTag ; # -iter $maxIter $tol; # LEFT BRACE _ Floor 1
}
element nonlinearBeamColumn [expr {$shift_2 + 10}] [expr {$shift_2 + 9}] 26 $np $BraceSecTag5 $LEFTBraceBZZTransfTag ; # -iter $maxIter $tol; # Last Element

# ### FRAME 2 ###
# ### Storey 1 ###
# ## LEFT Brace ###
set shift_3 1200

element nonlinearBeamColumn [expr {$shift_3 + 1}] 14 [expr {$shift_3 + 1}] $np $BraceSecTag5 $LEFTBraceBZZTransfTag ; #-iter $maxIter $tol; # First Element
for { set i 2 } {$i <= 9 } { incr i } {

element nonlinearBeamColumn [expr {$shift_3 + $i}] [expr {$shift_3 + $i - 1}] [expr {$shift_3 + $i}] $np $BraceSecTag5 $LEFTBraceBZZTransfTag ; # -iter $maxIter $tol; # LEFT BRACE _ Floor 1
}
element nonlinearBeamColumn [expr {$shift_3 + 10}] [expr {$shift_3 + 9}] 35 $np $BraceSecTag5 $LEFTBraceBZZTransfTag; # -iter $maxIter $tol; # Last Element


# ## RIGHT Brace ###
set shift_4 1300

element nonlinearBeamColumn [expr {$shift_4 + 1}] 15 [expr {$shift_4 + 1}] $np $BraceSecTag5 $LEFTBraceBZZTransfTag; # -iter $maxIter $tol; # First Element
for { set i 2 } {$i <= 9 } { incr i } {

element nonlinearBeamColumn [expr {$shift_4 + $i}] [expr {$shift_4 + $i - 1}] [expr {$shift_4 + $i}] $np $BraceSecTag5 $LEFTBraceBZZTransfTag ; # -iter $maxIter $tol; # LEFT BRACE _ Floor 1
}
element nonlinearBeamColumn [expr {$shift_4 + 10}] [expr {$shift_4 + 9}] 32 $np $BraceSecTag5 $LEFTBraceBZZTransfTag ; # -iter $maxIter $tol; # Last Element


# ### FRAME 3 ###
# ### Storey 1 ###
# ## LEFT Brace ###
set shift_5 1400

element nonlinearBeamColumn [expr {$shift_5 + 1}] 18 [expr {$shift_5 + 1}] $np $BraceSecTag3 $LEFTBraceBXXTransfTag ; # -iter $maxIter $tol; # First Element
for { set i 2 } {$i <= 9 } { incr i } {

element nonlinearBeamColumn [expr {$shift_5 + $i}] [expr {$shift_5 + $i - 1}] [expr {$shift_5 + $i}] $np $BraceSecTag3 $LEFTBraceBXXTransfTag; # -iter $maxIter $tol; # LEFT BRACE _ Floor 1
}
element nonlinearBeamColumn [expr {$shift_5 + 10}] [expr {$shift_5 + 9}] 43 $np $BraceSecTag3 $LEFTBraceBXXTransfTag ; # -iter $maxIter $tol; # Last Element


# ## RIGHT Brace ###
set shift_6 1500

element nonlinearBeamColumn [expr {$shift_6 + 1}] 19 [expr {$shift_6 + 1}] $np $BraceSecTag3 $LEFTBraceBXXTransfTag; # -iter $maxIter $tol; # First Element
for { set i 2 } {$i <= 9 } { incr i } {

element nonlinearBeamColumn [expr {$shift_6 + $i}] [expr {$shift_6 + $i - 1}] [expr {$shift_6 + $i}] $np $BraceSecTag3 $LEFTBraceBXXTransfTag ; # -iter $maxIter $tol; # LEFT BRACE _ Floor 1
}
element nonlinearBeamColumn [expr {$shift_6 + 10}] [expr {$shift_6 + 9}] 38 $np $BraceSecTag3 $LEFTBraceBXXTransfTag ; # -iter $maxIter $tol; # Last Element


# ### FRAME 4 ###
# ### Storey 1 ###
# ## LEFT Brace ###
set shift_7 1600

element nonlinearBeamColumn [expr {$shift_7 + 1}] 22 [expr {$shift_7 + 1}] $np $BraceSecTag3 $LEFTBraceBXXTransfTag ; #-iter $maxIter $tol; # First Element
for { set i 2 } {$i <= 9 } { incr i } {

element nonlinearBeamColumn [expr {$shift_7 + $i}] [expr {$shift_7 + $i - 1}] [expr {$shift_7 + $i}] $np $BraceSecTag3 $LEFTBraceBXXTransfTag ; # -iter $maxIter $tol; # LEFT BRACE _ Floor 1
}
element nonlinearBeamColumn [expr {$shift_7 + 10}] [expr {$shift_7 + 9}] 51 $np $BraceSecTag3 $LEFTBraceBXXTransfTag; # -iter $maxIter $tol; # Last Element


# ## RIGHT Brace ###
set shift_8 1700

element nonlinearBeamColumn [expr {$shift_8 + 1}] 23 [expr {$shift_8 + 1}] $np $BraceSecTag3 $LEFTBraceBXXTransfTag; # -iter $maxIter $tol; # First Element
for { set i 2 } {$i <= 9 } { incr i } {

element nonlinearBeamColumn [expr {$shift_8 + $i}] [expr {$shift_8 + $i - 1}] [expr {$shift_8 + $i}] $np $BraceSecTag3 $LEFTBraceBXXTransfTag; # -iter $maxIter $tol; # LEFT BRACE _ Floor 1
}
element nonlinearBeamColumn [expr {$shift_8 + 10}] [expr {$shift_8 + 9}] 46 $np $BraceSecTag3 $LEFTBraceBXXTransfTag; # -iter $maxIter $tol; # Last Element


puts "Elements are all DEFINED !!!! "

# ######### All Hinges of Frame 1

# GroundFloor

# Floor 1
rotspring3D 420 25 26 $matID_HINGE_ZZ $matID_Rot_ZZ ; #$matID_Brace; #LeftBrace
rotspring3D 421 25 27 $matID_HINGE_ZZ $matID_Rot_ZZ ; #$matID_Brace; #BeamonLEFT
rotspring3D 422 30 28 $matID_HINGE_ZZ $matID_Rot_ZZ ; #$matID_Brace; #BeamonRIGHT
rotspring3D 423 30 29 $matID_HINGE_ZZ $matID_Rot_ZZ ; #$matID_Brace; #RightBrace


# ######## All Hinges of Frame 2

# GroundFloor

# Floor 1
rotspring3D 424 31 33 $matID_HINGE_ZZ $matID_Rot_ZZ ; #$matID_Brace;
rotspring3D 425 31 32 $matID_HINGE_ZZ $matID_Rot_ZZ ; #$matID_Brace
rotspring3D 426 36 34 $matID_HINGE_ZZ $matID_Rot_ZZ ; #$matID_Brace;
rotspring3D 427 36 35 $matID_HINGE_ZZ $matID_Rot_ZZ ; #$matID_Brace


# ######### All Hinges of Frame 3

# GroundFloor

# Floor 1
rotspring3D 428 37 38 $matID_HINGE_XX $matID_Rot_XX ; #$matID_Brace;
rotspring3D 429 37 39 $matID_HINGE_XX $matID_Rot_XX ; #$matID_Brace
rotspring3D 430 44 42 $matID_HINGE_XX $matID_Rot_XX ; #$matID_Brace;
rotspring3D 431 44 43 $matID_HINGE_XX $matID_Rot_XX ; #$matID_Brace


# ######### All Hinges of Frame 4

# GroundFloor

# Floor 1
rotspring3D 432 45 46 $matID_HINGE_XX $matID_Rot_XX ; #$matID_Brace;
rotspring3D 433 45 47 $matID_HINGE_XX $matID_Rot_XX ; #$matID_Brace
rotspring3D 434 52 50 $matID_HINGE_XX $matID_Rot_XX ; #$matID_Brace;
rotspring3D 435 52 51 $matID_HINGE_XX $matID_Rot_XX ; #$matID_Brace

#Only at Floor level is that pins are modelled

puts "Pins on Elements have been defined"




# #######################################################################################################
# ######################################## Slab mass & Eigenvalue Analysis #####################
# #######################################################################################################

# ### SLAB Mass ---> At THE MASTER node _ CM of the Structure!
set mX 206.51; # horizontal mass #### Mudar quando for para estrutura de 3 Pisos
set mZ 206.51; # vertical mass #### Mudar quando for para estrutura de 3 Pisos
set mIy 13285.17

# ### At All other master nodes on each floor

# ### Floor1
set mF12 [ expr { ($W_Brace5*$Leff1_FrameZ/2 + $W_HEB300*$H_Piso1/2 + $W_IPE330*$Z_4m/2)/$g } ]
set mF34 [ expr { ($W_Brace3*$Leff1_FrameX/2 + $W_HEB300*$H_Piso1/2 + $W_IPE360*$X_6m/2)/$g } ]
puts "Each Nodal Mass at Frame12 is $mF12"
puts "Each Nodal Mass at Frame34 is $mF34"

#masses node tx ty tz mIx mIy mIz
mass 100000 $mX 0 $mZ 0 $mIy 0

mass 25 $mF12 0 $mF12 0 0 0
mass 30 $mF12 0 $mF12 0 0 0
mass 31 $mF12 0 $mF12 0 0 0
mass 36 $mF12 0 $mF12 0 0 0

mass 37 $mF34 0 $mF34 0 0 0
mass 44 $mF34 0 $mF34 0 0 0
mass 45 $mF34 0 $mF34 0 0 0
mass 52 $mF34 0 $mF34 0 0 0

puts "Mass Has been applied"

set pi [expr 2.0*asin(1.0)]
set nModes 3;
set lambdaN [eigen -fullGenLapack 3]
set lambdaI [lindex $lambdaN [expr 0]]
set lambdaJ [lindex $lambdaN [expr $nModes - 2]]
set lambdaK [lindex $lambdaN [expr $nModes - 1]]
set sqroot1 [expr { pow( $lambdaI,0.5) }]
set sqroot2 [expr { pow( $lambdaJ,0.5) }]
set sqroot3 [expr { pow( $lambdaK,0.5) }]
set T1 [expr {2.0*$pi/$sqroot1} ];
set T2 [expr {2.0*$pi/$sqroot2} ];
set T3 [expr {2.0*$pi/$sqroot3} ];
puts "T1 = $T1 s\n"
puts "T2 = $T2 s\n"
puts "T3 = $T3 s\n"

set period "modes_Periods_Static.txt"
set Periods [ open $period "w" ]
puts $Periods "T1 is $T1 sec\n"
puts $Periods "T2 is $T2 sec\n"
puts $Periods "T3 is $T3 sec\n"
close $Periods



# #######################################################################################
# ############################### DISPLAY THE MODEL #########################
# #######################################################################################

recorder display "Model" 10 10 500 500 -wipe
prp 0 0 50; #prp [expr {2*$X_6m + $X_6m/2}] [expr {$H_Piso1}] [expr {$Z_7m + $Z_4m/2}]
vup 0 1 0
vpn 2 -1 1
viewWindow -13 13 -13 13
display 1 2 3 ;# display 1 2 10
puts "Model is displayed\n"


# Display Graphical 1st Mode Shape
recorder display "Mode Shape 1 " 510 10 500 500 -wipe
prp 0 0 50
vup 0 1 0
vpn 2 -1 1
viewWindow -13 13 -13 13
display -1 2 3
puts "1st mode Shape is displayed\n"

# Display Graphical 2nd Mode Shape
recorder display "Mode Shape 2" 1010 10 500 500 -wipe
prp 0 0 50
vup 0 1 0
vpn 2 -1 1
viewWindow -13 13 -13 13
display -2 2 3
puts "2nd mode Shape is displayed\n"


# Display Graphical 3rd Mode Shape
recorder display "Mode Shape 3" 510 510 500 500 -wipe
prp 0 0 50
vup 0 1 0
vpn 2 -1 1
viewWindow -13 13 -13 13
display -3 2 3
puts "3rd mode Shape is displayed\n"


# ----------------- All Recorders ------------------------

set Tol 1.0e-6;


set DataDir1 Static_Analysis_1000XX&ZZ
file mkdir $DataDir1; # create output folder

set subDir1 Displacements
set subDir2 ForceDeformation
set subDir3 Nodes_Reactions
file mkdir $DataDir1/$subDir1; # create output folder
file mkdir $DataDir1/$subDir2; # create output folder
file mkdir $DataDir1/$subDir3;

recorder Node -file $DataDir1/BaseReactions.out -time -node 1 2 3 4 5 6 7 8 -dof 1 2 3 reaction ; # They will be zero ´cause these nodes are tottally fixed




# Frame 1
recorder Node -file $DataDir1/$subDir3/COLUMNS_Frame1.out -time -node 9 12 -dof 1 2 3 reaction
recorder Node -file $DataDir1/$subDir3/BRACES_Frame1.out -time -node 10 11 -dof 1 2 3 reaction

# Frame 2
recorder Node -file $DataDir1/$subDir3/COLUMNS_Frame2.out -time -node 13 16 -dof 1 2 3 reaction
recorder Node -file $DataDir1/$subDir3/BRACES_Frame2.out -time -node 14 15 -dof 1 2 3 reaction

# Frame 3
recorder Node -file $DataDir1/$subDir3/COLUMNS_Frame3.out -time -node 17 20 -dof 1 2 3 reaction
recorder Node -file $DataDir1/$subDir3/BRACES_Frame3.out -time -node 18 19 -dof 1 2 3 reaction

# Frame 4
recorder Node -file $DataDir1/$subDir3/COLUMNS_Frame4.out -time -node 21 24 -dof 1 2 3 reaction
recorder Node -file $DataDir1/$subDir3/BRACES_Frame4.out -time -node 22 23 -dof 1 2 3 reaction

# ---------------------------------------------------------------------------------------

# Frame 1


recorder Element -file $DataDir1/$subDir2/Ele110_GlobalForce.out -time -ele 110 globalForce; # Frame 1
recorder Element -file $DataDir1/$subDir2/Ele111.GlobalForce.out -time -ele 111 globalForce;
recorder Element -file $DataDir1/$subDir2/Ele1005_LocalForces.out -time -ele 1005 localForce
recorder Element -file $DataDir1/$subDir2/Ele1005_Deformation.out -time -ele 1005 section 1 deformation
recorder Element -file $DataDir1/$subDir2/Ele1105_LocalForces.out -time -ele 1105 localForce
recorder Element -file $DataDir1/$subDir2/Ele1105_Deformation.out -time -ele 1105 section 1 deformation

recorder Element -file $DataDir1/$subDir2/Ele112_GlobalForce.out -time -ele 112 globalForce; # Frame 2
recorder Element -file $DataDir1/$subDir2/Ele113_GlobalForce.out -time -ele 113 globalForce;
recorder Element -file $DataDir1/$subDir2/Ele1205_LocalForces.out -time -ele 1205 localForce
recorder Element -file $DataDir1/$subDir2/Ele1205_Deformations.out -time -ele 1205 section 1 deformation
recorder Element -file $DataDir1/$subDir2/Ele1305_LocalForces.out -time -ele 1305 localForce
recorder Element -file $DataDir1/$subDir2/Ele1305_Deformations.out -time -ele 1305 section 1 deformation

recorder Element -file $DataDir1/$subDir2/Ele114_GlobalForce.out -time -ele 114 globalForce; # Frame 3
recorder Element -file $DataDir1/$subDir2/Ele115_GlobalForce.out -time -ele 115 globalForce;
recorder Element -file $DataDir1/$subDir2/Ele1405_LocalForces.out -time -ele 1405 localForce
recorder Element -file $DataDir1/$subDir2/Ele1405_Deformations.out -time -ele 1405 section 1 deformation
recorder Element -file $DataDir1/$subDir2/Ele1505_LocalForces.out -time -ele 1505 localForce
recorder Element -file $DataDir1/$subDir2/Ele1505_Deformations.out -time -ele 1505 section 1 deformation


recorder Element -file $DataDir1/$subDir2/Ele116_GlobalForce.out -time -ele 116 globalForce; # Frame 4
recorder Element -file $DataDir1/$subDir2/Ele117_GlobalForce.out -time -ele 117 globalForce;
recorder Element -file $DataDir1/$subDir2/Ele1605_LocalForces.out -time -ele 1605 localForce
recorder Element -file $DataDir1/$subDir2/Ele1605_Deformations.out -time -ele 1605 section 1 deformation
recorder Element -file $DataDir1/$subDir2/Ele1705_LocalForces.out -time -ele 1705 localForce
recorder Element -file $DataDir1/$subDir2/Ele1705_Deformations.out -time -ele 1705 section 1 deformation

# -------------------------------------------------------------------------------------------

# Node 30 & Node 36 displacement

recorder Node -file $DataDir1/$subDir1/DispNode30_Node36.out -time -node 30 36 -dof 1 3 disp
recorder Node -file $DataDir1/$subDir1/Disp_CM.out -time -node 100000 -dof 1 3 disp

record

# #######################################################################################################
# ############################### Gravity Loads & Gravity Analysis #########################
# #######################################################################################################

puts "Load Definition Started"

# Convention #### int12 --> interior points of the frame 1&2
#### span34 --> points in the span of the frame 3&4

#frame1&2-point loads_
# Storey 1 & 2
set G_Floor12_int12 -43.19
set Q_Floor12_int12 -22.0
set ED_Floor12_int12 [expr $G_Floor12_int12*1.0+$Q_Floor12_int12*0.0]
# Storey 3
set G_Floor3_int12 -43.19
set Q_Floor3_int12 -11.0
set ED_Floor3_int12 [expr $G_Floor3_int12*1.0+$Q_Floor3_int12*0.0]

#frame3&4-point loads
# Storey 1 & 2
set G_Floor12_int34 -27.51
set Q_Floor12_int34 -14.0
set ED_Floor12_int34 [expr $G_Floor12_int34*1.0+$Q_Floor12_int34*0.0]
# Storey 3
set G_Floor3_int34 -27.51
set Q_Floor3_int34 -7.0
set ED_Floor3_int34 [expr $G_Floor3_int34*1.0+$Q_Floor3_int34*0.0]

# ### Point Loads on the beam span
# Storey 1 & 2
set G_Floor12_span34 -27.51
set Q_Floor12_span34 -14.0
set ED_Floor12_span34 [expr $G_Floor12_span34*1.0+$Q_Floor12_span34*0.0]
# Storey 3
set G_Floor3_span34 -27.51
set Q_Floor3_span34 -7.0
set ED_Floor3_span34 [expr $G_Floor3_span34*1.0+$Q_Floor3_span34*0.0]


#Frame 1&2 - distributed loads on the BEAMS
# Storey 1 & 2
set G_Floor12_dist12 -17.23
set Q_Floor12_dist12 -2.0
set ED_Floor12_dist12 [expr {$G_Floor12_dist12*1.0 + $Q_Floor12_dist12*0.0}]
# Storey 3
set G_Floor3_dist12 -3.93
set Q_Floor3_dist12 -1.0
set ED_Floor3_dist12 [expr {$G_Floor3_dist12*1.0 + $Q_Floor3_dist12*0.0 }]


#Frame 3&4 - distributed loads on the BEAMS
# Storey 1 & 2
set G_Floor12_wall34 -13.3
# Storey 3
set G_Floor3_dist34 -3.93
set Q_Floor3_dist34 -1.0
set ED_Floor3_dist34 [expr {$G_Floor3_dist34*1.0 + $Q_Floor3_dist34*0.3 }]

set PL_Gravity 1

set F 1000; #F=1000kN a ser aplicada no CM!!! Dir ZZ positive

pattern Plain $PL_Gravity Linear { ;

load 25 0 $ED_Floor3_int12 0 0 0 0; #FRAME 1
load 30 0 $ED_Floor3_int12 0 0 0 0;

load 31 0 $ED_Floor3_int12 0 0 0 0; #FRAME 2
load 36 0 $ED_Floor3_int12 0 0 0 0;


load 37 0 $ED_Floor3_int34 0 0 0 0; #FRAME 3
load 44 0 $ED_Floor3_int34 0 0 0 0;
load 40 0 $ED_Floor3_span34 0 0 0 0;
load 41 0 $ED_Floor3_span34 0 0 0 0;

load 45 0 $ED_Floor3_int34 0 0 0 0; #FRAME 4
load 52 0 $ED_Floor3_int34 0 0 0 0;
load 48 0 $ED_Floor3_span34 0 0 0 0;
load 49 0 $ED_Floor3_span34 0 0 0 0;

# load 100000 $F 0 $F 0 0 0;

# BEAMS
for {set ielement 512} {$ielement<=517} {incr ielement 1} {
eleLoad -ele $ielement -type -beamUniform [expr $ED_Floor3_dist34] 0.0}; # FRAME 3&4

eleLoad -ele 510 -type -beamUniform $ED_Floor3_dist12 0; #FRAME 1
eleLoad -ele 511 -type -beamUniform $ED_Floor3_dist12 0; #FRAME 2

# COLUMNS
for {set ielement 110} {$ielement<=117} {incr ielement 1} {
eleLoad -ele $ielement -type -beamUniform 0.0 0.0 [expr -$W_HEB300] }

# BRACES
for {set ielement 1001} {$ielement<=1010} {incr ielement 1} {eleLoad -ele $ielement -type -beamUniform [expr -$W_Brace5] 0.0};# FRAME 1
for {set ielement 1101} {$ielement<=1110} {incr ielement 1} {eleLoad -ele $ielement -type -beamUniform [expr -$W_Brace5] 0.0}
for {set ielement 1201} {$ielement<=1210} {incr ielement 1} {eleLoad -ele $ielement -type -beamUniform [expr -$W_Brace5] 0.0};# FRAME 2
for {set ielement 1301} {$ielement<=1310} {incr ielement 1} {eleLoad -ele $ielement -type -beamUniform [expr -$W_Brace5] 0.0}


for {set ielement 1401} {$ielement<=1410} {incr ielement 1} {eleLoad -ele $ielement -type -beamUniform [expr -$W_Brace3] 0.0};# FRAME 3
for {set ielement 1501} {$ielement<=1510} {incr ielement 1} {eleLoad -ele $ielement -type -beamUniform [expr -$W_Brace3] 0.0}
for {set ielement 1601} {$ielement<=1610} {incr ielement 1} {eleLoad -ele $ielement -type -beamUniform [expr -$W_Brace3] 0.0};# FRAME 4
for {set ielement 1701} {$ielement<=1710} {incr ielement 1} {eleLoad -ele $ielement -type -beamUniform [expr -$W_Brace3] 0.0}
}

puts "Load Definition Success ! "




# STATIC analysis commands
constraints Penalty 1.0e15 1.0e15
numberer RCM; # renumber dof´s as to minimize band-width
system BandGeneral;
test NormDispIncr $Tol 10 3;
algorithm Newton;
set NstepGravity 10;
set DGravity [expr {1.0/$NstepGravity}];
integrator LoadControl $DGravity;
analysis Static; # Static or Transient analysis
analyze $NstepGravity;

puts "Model Built\n"
Post Reply