Dear All
Is it possible to do moment-curvature analysis in OpenSees for open sections?
I am using the moment-curvature example for a column to conduct moment-curvature analysis for a C-shaped wall, however the analysis does not run properly.
Could someone please advice me if it possible to conduct moment-curvature analysis for open-sections, and potentially what could be causing my problem!
Below is my code.
Many Thanks
Anita
# File: Tags.tcl
# _____________________________________________________________________________________________ #
# Units: N, mm, MPa, s
## Tags
# Uniaxial Material
set UnconfTag 1
set ConfTag 2
set Steel 3
##set softMaterial 4
##set rigidMaterial 5
##set springMatTag 6
# Sections
set Fiber 1
# Elements
set eleTagMK 1 ; # creat element tag for moment curvature analysis in moment-curvature file
puts " Tags.tcl created"
# ---------------------------------------end of Tags.tcl file ---------------------------------------------------------------------- #
# File: Input.tcl
# _____________________________________________________________________________________________ #
# units: N, MPa, mm
source Tags.tcl
# 1. Define Material Properties
# ------------------------------------------------------------------------------------------------------------- #
# --------- Column Material Properties --------- #
# Unconfined concrete
set fc 40.0
set ec0 0.002
set ecu [expr 0.012-0.0001*$fc] ; # Reddiar, 2009
set et [expr 0.1*$ecu]
set Einitial [expr 5000*sqrt($fc)]
set fct [expr 0.6*sqrt($fc)]
# Longitudinal reinforcement
set fy 410.0
set fsult [expr 1.05*$fy] ;
set esult 0.12
set Es 200.0e3
set esy [expr $fy/$Es] ; # steel strain at yield
set bs [expr (($fsult-$fy)/($esult-$esy))/$Es] ; # strain hardening parameter b, Giuffre-menegotto-Pinto
set R0 20.0 ; # Giuffre-Menegotto-Pinto parameters
set cR1 0.925
set cR2 0.15
# Unconfined concrete
# uniaxialMaterial Concrete04 $matTag $fc $ec $ecu $Ec <$fct $et> <$beta>
uniaxialMaterial Concrete04 $UnconfTag [expr -$fc] [expr -$ec0] [expr -$ecu] [expr $Einitial] $fct $et ;
# Reinforcement
# uniaxialMaterial Steel02 $matTag $Fy $E $b $R0 $cR1 $cR2 <$a1 $a2 $a3 $a4 $sigInit>
uniaxialMaterial Steel02 $Steel $fy $Es $bs $R0 $cR1 $cR2 ;
# 2. Define Fiber Section Detail
# ------------------------------------------------------------------------------------------------------------- #
# |-----df-------|
# _ ______________ _
# | | ___________ | |
# | | | | | dr
# | | | |_| _|_
# | | |
# | | | y
# | | | ^
# dw | |z<--|
# | | |
# | | |
# | | |
# | | | _
# | | | | |
# | | |__________| |
# _|_ |______________|
set dw 6200.0
set df 2200.0
set dr 600.0
set tw 200.0 ; # wall thickness
set db_w 12.0 ; # diam of primary long bars
set db_wsec 12.0 ; # diam of secondary bars
set nWebBars 10 ; # no. of bars in web for one layer
set nFlangeBars 5 ; # no. of bars in flange for one layer
set nReturnBars 2 ; # no. of bars in returns for one layer
set cover_w 30.0 ; # clear cover
set sx 200.0 ; # approx spacing of bars, used to locate bar postion for flange and returns
set fibreY 100.0 ; # length of fibre height (i.e. in the local y-direction)
set fibreZ 100.0 ; # width of fibre height (i.e. in the local z-direction)
set PI [expr 2*asin(1.0)]; # define constant pi
set Asreinf_w [expr pow($db_w/2,2)*$PI]; # area of no. 1 bar
set dbar_w [expr $cover_w+$db_wsec+$db_w/2] ; # centre-to-centre spacng from edge to long bar
set Ag [expr ($dw*$tw)+(2*$tw*($df-$tw))+(2*$tw*($dr-$tw))]
section Fiber $Fiber {
# patch rect $matTag $numSubdivY $numSubdivZ $yI $zI $yJ $zJ
# Create the concrete web section:
patch rect $UnconfTag [expr round($dw/$fibreY)] [expr round($tw/$fibreZ)] [expr -$dw/2] [expr $df/2] [expr $dw/2] [expr $df/2-$tw]
# Create the concrete top flange section:
patch rect $UnconfTag [expr round($tw/$fibreY)] [expr round(($df-$tw)/$fibreZ)] [expr $dw/2-$tw] [expr $df/2-$tw] [expr $dw/2] [expr -$df/2]
# Create the concrete bottom flange section:
patch rect $UnconfTag [expr round($tw/$fibreY)] [expr round(($df-$tw)/$fibreZ)] [expr -$dw/2+$tw] [expr $df/2-$tw] [expr -$dw/2] [expr -$df/2]
# Create the concrete top return section:
patch rect $UnconfTag [expr round(($dr-$tw)/$fibreY)] [expr round($tw/$fibreZ)] [expr $dw/2-$tw] [expr -$df/2+$tw] [expr $dw/2-$dr] [expr -$df/2]
# Create the concrete bottom return section:
patch rect $UnconfTag [expr round(($dr-$tw)/$fibreY)] [expr round($tw/$fibreZ)] [expr -$dw/2+$tw] [expr -$df/2+$tw] [expr -$dw/2+$dr] [expr -$df/2]
# Create the reinforcing fibers
# Reinforcement in web (layer 1, layer 2)
layer straight $Steel $nWebBars $Asreinf_w [expr -$dw/2+$dbar_w] [expr $df/2-$dbar_w] [expr $dw/2-$dbar_w] [expr $df/2-$dbar_w]
layer straight $Steel $nWebBars $Asreinf_w [expr -$dw/2+$dbar_w] [expr $df/2-$tw+$dbar_w] [expr $dw/2-$dbar_w] [expr $df/2-$tw+$dbar_w]
# Reinforcement in top flange (layer 1, layer 2)
layer straight $Steel $nFlangeBars $Asreinf_w [expr $dw/2-$dbar_w] [expr $df/2-$tw+$dbar_w-$sx] [expr $dw/2-$dbar_w] [expr -$df/2+$dbar_w]
layer straight $Steel $nFlangeBars $Asreinf_w [expr $dw/2-$tw+$dbar_w] [expr $df/2-$tw+$dbar_w-$sx] [expr $dw/2-$tw+$dbar_w] [expr -$df/2+$dbar_w]
# Reinforcement in bottom flange (layer 1, layer 2)
layer straight $Steel $nFlangeBars $Asreinf_w [expr -1*($dw/2-$dbar_w)] [expr $df/2-$tw+$dbar_w-$sx] [expr -1*($dw/2-$dbar_w)] [expr -$df/2+$dbar_w]
layer straight $Steel $nFlangeBars $Asreinf_w [expr -1*($dw/2-$tw+$dbar_w)] [expr $df/2-$tw+$dbar_w-$sx] [expr -1*($dw/2-$tw+$dbar_w)] [expr -$df/2+$dbar_w]
# Reinforcement in top return (layer 1, layer 2)
layer straight $Steel $nReturnBars $Asreinf_w [expr $dw/2-$tw+$dbar_w-$sx] [expr -$df/2+$tw-$dbar_w] [expr $dw/2-$dr+$dbar_w] [expr -$df/2+$tw-$dbar_w]
layer straight $Steel $nReturnBars $Asreinf_w [expr $dw/2-$tw+$dbar_w-$sx] [expr -$df/2+$dbar_w] [expr $dw/2-$dr+$dbar_w] [expr -$df/2+$dbar_w]
# Reinforcement in bottom return (layer 1, layer 2)
layer straight $Steel $nReturnBars $Asreinf_w [expr -1*($dw/2-$tw+$dbar_w-$sx)] [expr -$df/2+$tw-$dbar_w] [expr -1*($dw/2-$dr+$dbar_w)] [expr -$df/2+$tw-$dbar_w]
layer straight $Steel $nReturnBars $Asreinf_w [expr -1*($dw/2-$tw+$dbar_w-$sx)] [expr -$df/2+$dbar_w] [expr -1*($dw/2-$dr+$dbar_w)] [expr -$df/2+$dbar_w]
}
# 3. Define Axial load
# ------------------------------------------------------------------------------------------------------------- #
set ALR 0.05 ; # Axial load ratio
set P [expr $ALR*$fc*(($dw*$tw)+(2*$tw*($df-$tw))+(2*$tw*($dr-$tw)))] ; # input magnitude ONLY
puts " Input.tcl created"
# ------------------------------------end of Input.tcl file------------------------------------------------------------------------- #
# file: MomentCurvatureAnalysis.tcl
# _____________________________________________________________________________________________ #
wipe all;
model BasicBuilder -ndm 2 -ndf 3; # 2D with 3 degress of freedom
source Input.tcl
# Define two nodes at (0,0)
node 1 0.0 0.0
node 2 0.0 0.0
# Fix all degrees of freedom except axial and bending
fix 1 1 1 1
fix 2 0 1 0
# Define element zeroLengthSection tag ndI ndJ secTag
element zeroLengthSection $eleTagMK 1 2 $Fiber
# Create recorders
#recorder Node -file section$secTag.out -time -node 2 -dof 3 disp #here the negative time actually represents curvature?!
recorder Node -file section$Fiber.out -time -node 2 -dof 3 disp
recorder Node -file Node1React.out -time -node 1 -dof 1 2 3 reaction
recorder Node -file Node2React.out -time -node 2 -dof 1 2 3 reaction
# Unconfined concrete in compression
recorder Element -file SSUnConComp.out -ele $eleTagMK section fiber [expr $dw/2] 0 stressStrain
# Unconfined concrete in tension
recorder Element -file SSUnConTens.out -ele $eleTagMK section fiber [expr -$dw/2] 0 stressStrain
# Steel in compression
recorder Element -file SSSteelComp.out -ele $eleTagMK section fiber [expr $dw/2-$dbar_w] [expr $df/2-$dbar_w] stressStrain
# Steel in tension
recorder Element -file SSSteelTens.out -ele $eleTagMK section fiber [expr -$dw/2+$dbar_w] [expr $df/2-$dbar_w] stressStrain
# Conduct Sectional Analysis
# (i) Define some parameters required to conduct Sectional Analysis
# Estimate yield curvature # Estimate yield curvature
#(Assuming no axial load and only top and bottom steel)
set d [expr $dw-$dbar_w] ;# d -- from cover to rebar
#set Ky [expr $esy/(0.7*$d)]
set Ky [expr 2*$esy/$dw]
# Print estimate to standard output
# puts "Estimated yield curvature: $Ky"
set mu 50; # Target ductility for analysis
set numIncr 1000; # Number of analysis increments
set maxK [expr $Ky*$mu]
# Make Results directory
#file mkdir Results
# (ii) Define constant axial load
pattern Plain 1 "Constant" {
load 2 [expr -$P] 0.0 0.0
}
# Define analysis parameters
integrator LoadControl 0.0
system SparseGeneral -piv; # Overkill, but may need the pivoting!
#test NormUnbalance 1.0e-9 10
test NormDispIncr 1.0e-8 8000
numberer Plain
constraints Plain
algorithm Newton
analysis Static
# Do one analysis for constant axial load
analyze 1
# (iii) Define reference moment
pattern Plain 2 "Linear" {
load 2 0.0 0.0 1.0
}
# Compute curvature increment
set dK [expr $maxK/$numIncr]
# puts "dK curvature increment: $dK"
# Use displacement control at node 2 for section analysis
integrator DisplacementControl 2 3 $dK
# Do the section analysis
analyze $numIncr
## ------------------- Save input parameters for MATLAB --------------------------- ##
set file [open InputParameters.out "w"]
puts $file "$fy"
close $file
## ------------------- Executes MATLAB to get Moment-curvature plot --------------------------- ##
exec matlab -nosplash -nodesktop -r "MatlabMomCurvature"
#exec matlab -nosplash -nodesktop $MKfolderPath -r "MatlabMomCurvature; quit" # closes graph automaticaly
# ------------------------------------end of MonetCurvatureAnalysis.tcl file------------------------------------------------------------------------- #
Moment-curvature analysis for open sections
Moderators: silvia, selimgunay, Moderators