Change the section of the member during analysis

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

Moderators: silvia, selimgunay, Moderators

ybala
Posts: 17
Joined: Wed Nov 03, 2010 8:31 am

Re: Change the section of the member during analysis

Post by ybala »

Here is the Tcl script for the member retrofitted with plates. Thanks so much in advance for your comments.





wipe all;
source DisplayModel2D.tcl;
source DisplayPlane.tcl;


#Results
# ----------------------------------------
set dataDir Data5;
file mkdir $dataDir;


# Units = KN-mm
# ----------------------------------------
model BasicBuilder -ndm 3 -ndf
set Pi 3.14159265


# Number of elements and integration points
# ----------------------------------------
set NELEMCOL 1
set ptoint 4

# Frame height
# -----------------------------------------
set Frame_H 1000.


# Characteristics of the column:
# -----------------------------------------
set Column_A 36000.
set Column_Iy 7.87E+8
set Column_Iz 2.46E+8
set Column_J 20400000.
set Column_F_b 322.
set Column_F_t 44.1
set Column_H 365.
set Column_W_t 26.9


# Added plate to the existing section
# -----------------------------------------
set Plate_b 1440.
set Plate_t 50.


# Steel material properties
# -----------------------------------------
set Fy 0.300
set E 200.
set nu 0.3
set G [expr $E / 2 / (1 + $nu)]


# Location of the corner nodes
# ------------------------------------------
node 110 0. 0. 0.
node 1003 0. [expr $Frame_H] 0.


# Boundary conditions
# ------------------------------------------
fix 1003 0 0 1 1 1 0
fix 110 1 1 1 1 1 0


# Vector for definitions of the member local axes
# -----------------------------------------------
geomTransf Corotational 3 0 0 1


# Fiber discretization of the column member cross-section
# --------------------------------------------------------
# J of the column member (Torsion)
uniaxialMaterial Elastic 1399 [expr $G * $Column_J]


#Column section
# -----------------------------------------------
set bc [expr $Column_F_b]
set hc [expr $Column_H]


# Residual stress
set sigma_C [expr $Fy * -0.3]
set sigma_T [expr ($Column_F_b * $Column_F_t) / ($Column_F_b * $Column_F_t + $Column_W_t * ($Column_H - 2 * $Column_F_t)) * -$sigma_C]


# Flange fibers
for {set i 1 } {$i <= 10 } {incr i 1} {
set sigma_r_c [expr $sigma_C + ($i / 10. - 0.05) * ($sigma_T - $sigma_C)];
uniaxialMaterial Steel02 [expr ($i + 10)] $Fy $E [expr (0.1 * $Fy / 0.04) / $E] 30 0.925 0.15 0.4 22 0.4 22 $sigma_r_c ;
}

# Web fibers
uniaxialMaterial Steel02 200 $Fy $E [expr (0.1 * $Fy / 0.04) / $E] 30 0.925 0.15 0.4 22 0.4 22 $sigma_T;


# Added plates
uniaxialMaterial Steel01 30001 $Fy $E [expr (0.1 * $Fy / 0.04) / $E] 0.4 22 0.4 22 ;


#Retrofitted Column Section
# --------------------------------------
section Fiber 1300 {
# Left flange
for {set i 1 } {$i <= 10 } {incr i 1} {
patch quad [expr ($i + 10)] 20 1 [expr -$hc / 2.] [expr -$bc / 2. + ($i - 1) * $bc / 20.] [expr -$hc / 2. + $Column_F_t] [expr -$bc / 2. + ($i - 1) * $bc / 20.] [expr -$hc / 2. + $Column_F_t] [expr -$bc / 2. + $i * $bc / 20.] [expr -$hc / 2.] [expr -$bc / 2. + $i * $bc / 20.]
}
for {set i 11 } {$i <= 20 } {incr i 1} {
patch quad $i 20 1 [expr -$hc / 2. ] [expr $bc / 2. - ($i - 10) * $bc / 20.] [expr -$hc / 2. + $Column_F_t ] [expr $bc / 2. - ($i - 10) * $bc / 20.] [expr -$hc / 2. + $Column_F_t] [expr $bc / 2. - ($i - 11) * $bc / 20.] [expr -$hc / 2.] [expr $bc / 2. - ($i - 11) * $bc / 20.]
}

# Right flange
for {set i 1 } {$i <= 10 } {incr i 1} {
patch quad [expr ($i + 10)] 20 1 [expr $hc / 2. - $Column_F_t] [expr -$bc / 2. + ($i - 1) * $bc / 20.] [expr $hc / 2.] [expr -$bc / 2. + ($i - 1) * $bc / 20.] [expr $hc / 2.] [expr -$bc / 2. + $i * $bc / 20.] [expr $hc / 2. - $Column_F_t] [expr -$bc / 2. + $i * $bc / 20.]
}
for {set i 11 } {$i <= 20 } {incr i 1} {
patch quad $i 20 1 [expr $hc / 2. - $Column_F_t] [expr $bc / 2. - ($i - 10) * $bc / 20.] [expr $hc / 2. ] [expr $bc / 2. - ($i - 10) * $bc / 20.] [expr $hc / 2.] [expr $bc / 2. - ($i - 11) * $bc / 20.] [expr $hc / 2. - $Column_F_t] [expr $bc / 2. - ($i - 11) * $bc / 20.]
}

# web
patch quad 200 1 20 [expr -$hc / 2. + $Column_F_t] [expr -$Column_W_t / 2.] [expr $hc / 2. - $Column_F_t] [expr -$Column_W_t / 2.] [expr $hc / 2. - $Column_F_t] [expr $Column_W_t / 2.] [expr -$hc / 2. + $Column_F_t] [expr $Column_W_t / 2.]

# Left Plate
patch quad 30001 20 1 [expr -$hc/ 2. - $Plate_t ] [expr -$Plate_b / 2.] [expr -$hc / 2.] [expr -$Plate_b / 2.] [expr -$hc / 2.] [expr $Plate_b / 2.] [expr -$hc / 2. - $Plate_t] [expr $Plate_b / 2.]

# Right Plate
patch quad 30001 20 1 [expr $hc/ 2. ] [expr -$Plate_b / 2.] [expr $hc / 2. + $Plate_t] [expr -$Plate_b / 2. ] [expr $hc / 2. + $Plate_t ] [expr $Plate_b/ 2.] [expr $hc / 2.] [expr $Plate_b / 2.]
}


# Adding torsional stiffness to the nonlinear beam-column element
# -----------------------------------------------------------------
section Aggregator 1301 1399 T -section 1300


# Column elements
# ---------------------------------------
set tol 1e-6
set maxIters 100
element nonlinearBeamColumn 10 110 1003 $ptoint 1301 3 -iter $maxIters $tol;

# Parameter command
# ---------------------------------------
parameter 100001 element 10 material 30001 E

updateParameter 100001 0.



# Load pattern-1
# -----------------------------------------
pattern Plain 1 "Linear" {
load 1003 0. 100.0 0. 0. 0. 0.
}

# Analysis
# ---------
numberer RCM
constraints Plain
system BandGeneral
test NormUnbalance 1.0e-3 1000 2
analysis Static;
set displayTag 2;
set numTimes 100;
integrator LoadControl 0.1
analyze 10

# Set time to zero and wipe analysis
# ------------------------------------------
loadConst -time 0.0
wipeAnalysis


#Update parameter command
# ------------------------------------------
updateParameter 100001 200.


# Load pattern-2
# ------------------------------------------
pattern Plain 2 "Linear" {
load 1003 0. 100.0 0. 0. 0. 0.
}

# Analysis
# ---------
numberer RCM
constraints Plain
system BandGeneral
test NormUnbalance 1.0e-3 1000 2
analysis Static;
set displayTag 2;
set numTimes 100;
integrator LoadControl 0.1
analyze 10

# Set time to zero and wipe analysis
# ------------------------------------------
loadConst -time 0.0
wipeAnalysis
Yasaman Balazadeh Minouei
mhscott
Posts: 880
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: Change the section of the member during analysis

Post by mhscott »

OK, with section aggregator I think you have to throw in an extra "section" string when you define the parameter

parameter 100001 element 10 section material 30001 E

Let me know if that works.
ybala
Posts: 17
Joined: Wed Nov 03, 2010 8:31 am

Re: Change the section of the member during analysis

Post by ybala »

Unfortunately, it does not work. Do you have any other suggestions?
Yasaman Balazadeh Minouei
mhscott
Posts: 880
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: Change the section of the member during analysis

Post by mhscott »

There's some issues in how the parameter command is parsed out. For now, the best work around is to create a parameter for one integration point, then loop over the rest using the addToParameter command, like this

parameter 100001 element 10 section 1 section material 30001 E
for {set i 2} {$i <= $ptoint} {incr i} {
addToParameter 100001 element 10 section $i section material 30001 E
}

This will make parameter 100001 point to E of material 30001 at all integration points ... doing what you wanted to, but doing it the hard way

Note that 'section' is in there twice
ybala
Posts: 17
Joined: Wed Nov 03, 2010 8:31 am

Re: Change the section of the member during analysis

Post by ybala »

Thanks so much for the commands.
Yasaman Balazadeh Minouei
Post Reply