pushover with a soft horizontal link

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

Moderators: silvia, selimgunay, Moderators

Post Reply
huzb
Posts: 21
Joined: Mon Aug 04, 2014 7:23 pm
Location: Tongji University

pushover with a soft horizontal link

Post by huzb »

Dear all
I would like to do a pushover analysis of a single story frame. There is a horizontal truss element connect with the beam of the frame. The lateral load is applied on the truss element by sp command.

The analysis failed to converge. It seems like the constraint of the loading point had some errors.

wipe
puts "System"
model basic -ndm 3 -ndf 6

puts "node"
node 1 -1.650E+004 0.000E+000 0.000E+000
node 2 -1.650E+004 0.000E+000 3.800E+003
node 5 -7.500E+003 0.000E+000 3.800E+003
node 212 -7.500E+003 0.000E+000 0.000E+000
node 6 0.000E+000 0.000E+000 3.800E+003

puts "nodemass"
mass 2 28.90895 28.90895 28.90895 0.000E+000 0.000E+000 0.000E+000
mass 5 28.90895 28.90895 28.90895 0.000E+000 0.000E+000 0.000E+000
mass 6 0.000E+000 0.000E+000 0.000E+000 0.000E+000 0.000E+000 0.000E+000


puts "equaldof"
equalDOF 2 5 1

puts "restraint"
fix 1 1 1 1 1 1 1;
fix 2 0 1 0 0 0 0;
fix 5 0 1 0 0 0 0;
fix 212 1 1 1 1 1 1;
fix 6 0 1 1 1 1 1;

puts "transformation"
geomTransf Linear 435 1.000 0.000 0.000
geomTransf Linear 439 0.000 0.000 1.000
geomTransf Linear 444 1.000 0.000 0.000

puts "material"
uniaxialMaterial Elastic 2 2.060E+005
uniaxialMaterial Steel01 4 345 2.06E+05 1.00E-06
uniaxialMaterial Elastic 204 5.282E+008
uniaxialMaterial Elastic 304 6.338E+008
uniaxialMaterial Elastic 404 9.060E+010
uniaxialMaterial Elastic 205 5.942E+010
uniaxialMaterial Elastic 305 5.942E+010
uniaxialMaterial Elastic 405 6.685E+016

puts "section"
##NF-BEAM
section Fiber 4 {
fiber -1.600E+002 -2.440E+002 9.600E+002 4
fiber -8.000E+001 -2.440E+002 9.600E+002 4
fiber 0.000E+000 -2.440E+002 9.600E+002 4
fiber 8.000E+001 -2.440E+002 9.600E+002 4
fiber 1.600E+002 -2.440E+002 9.600E+002 4
fiber -1.600E+002 2.440E+002 9.600E+002 4
fiber -8.000E+001 2.440E+002 9.600E+002 4
fiber 0.000E+000 2.440E+002 9.600E+002 4
fiber 8.000E+001 2.440E+002 9.600E+002 4
fiber 1.600E+002 2.440E+002 9.600E+002 4
fiber 0.000E+000 -1.904E+002 1.523E+003 4
fiber 0.000E+000 -9.520E+001 1.523E+003 4
fiber 0.000E+000 0.000E+000 1.523E+003 4
fiber 0.000E+000 9.520E+001 1.523E+003 4
fiber 0.000E+000 1.904E+002 1.523E+003 4
}

##ND-F-COL
section Fiber 5 {
patch quad 4 3 1 -750 750 -750 500 750 500 750 750
patch quad 4 3 1 -750 -500 -750 -750 750 -750 750 -500
patch quad 4 1 3 -750 500 -750 -500 -500 -500 -500 500
patch quad 4 1 3 500 500 500 -500 750 -500 750 500
}

section Aggregator 1004 204 Vy 304 Vz 404 T -section 4
section Aggregator 1005 205 Vy 305 Vz 405 T -section 5

puts "element"
element dispBeamColumn 435 1 2 3 1005 435
element dispBeamColumn 439 2 5 3 1004 439
element dispBeamColumn 444 212 5 3 1005 444
element corotTruss 448 5 6 1 2

puts "recorder"
recorder Node -file node.out -time -node 2 5 -dof 1 2 3 disp
recorder Element -file ele.out -time -ele 435 444 localForce
recorder Element -file ele448for.out -time -ele 448 axialForce
recorder Element -file ele448def.out -time -ele 448 deformation

puts "model analysis"
set numModes 1
set lambda [eigen $numModes]
set period "Periods.txt"
set Periods [open $period "w"]
puts $Periods " $lambda"
close $Periods
record
puts "fini model analysis"

## Load Case = DEAD
puts "gravity analysis"
pattern Plain 1 Linear {
eleLoad -ele 439 -type -beamUniform 0 -7.000E+001 0
}
constraints Plain
numberer Plain
system BandGeneral
test EnergyIncr 1.0e-6 200
algorithm Newton
integrator LoadControl 1.000E-001
analysis Static
analyze 10
loadConst -time 0.0
puts "fini gravity analysis"

puts "pushover analysis"
#PushOver Load Pattern
pattern Plain 2 Linear {
sp 6 1 0.1
}

constraints Plain
test NormDispIncr 1E-20 20 2
integrator DisplacementControl 2 1 10
algorithm Newton -initial
numberer RCM
system ProfileSPD
analysis Static
analyze 4000
puts "fini pushover analysis"
selimgunay
Posts: 916
Joined: Mon Sep 09, 2013 8:50 pm
Location: University of California, Berkeley

Re: pushover with a soft horizontal link

Post by selimgunay »

Are you using the truss to eliminate the axial forces on the beam? If so, you don't need the truss here as you don't have equaldof or rigid diaphragm constraints.
huzb
Posts: 21
Joined: Mon Aug 04, 2014 7:23 pm
Location: Tongji University

Re: pushover with a soft horizontal link

Post by huzb »

I would like to do modal pushover of a tall building and need to obtaine the descending part of pushover curves for collapse analysis. For higher modes lateral loads (such as the 2nd modes), it is difficult to obtaine the descending part by applying loads on nodes of the building. So I try to use the soft truss to do the analysis.
How can I improve the model or is there any other method to to obtaine the descending part of pushover curves of the building under higher modes lateral loads?
selimgunay
Posts: 916
Joined: Mon Sep 09, 2013 8:50 pm
Location: University of California, Berkeley

Re: pushover with a soft horizontal link

Post by selimgunay »

I don't think you need the soft horizontal link. When nonconvergence occurs, which is expected to occur in the descending branch of the pushover curve, you should try other nonlinear solution algorithms and also decrease the displacement increment and try different norms with increased tolerance. Please see the topic below as an example of such algorithm.

http://opensees.berkeley.edu/community/ ... =2&t=64248
huzb
Posts: 21
Joined: Mon Aug 04, 2014 7:23 pm
Location: Tongji University

Re: pushover with a soft horizontal link

Post by huzb »

Thank you very much.
The soft horizontal link method was suggested by a master thesis. So I think it is reasonable and try to use it. I don't know if there are some problems in my model.
selimgunay
Posts: 916
Joined: Mon Sep 09, 2013 8:50 pm
Location: University of California, Berkeley

Re: pushover with a soft horizontal link

Post by selimgunay »

Even if there are not problems in your model, nonconvergence is normal for the descending branch. That is why you should use an adaptive solution algorithm.
huzb
Posts: 21
Joined: Mon Aug 04, 2014 7:23 pm
Location: Tongji University

Re: pushover with a soft horizontal link

Post by huzb »

Thank you.
I try the following method these days. But it failed at first iteration. Could you give me some suggestions?

wipe
puts "System"
model basic -ndm 2 -ndf 3

puts "node"
node 1 -1.650E+004 0.000E+000
node 2 -1.650E+004 3.800E+003
node 5 -7.500E+003 3.800E+003
node 212 -7.500E+003 0.000E+000
node 6 0.000E+000 3.800E+003

puts "nodemass"
mass 2 28908.95 28908.95 0.000E+000
mass 5 28908.95 28908.95 0.000E+000

#puts "equaldof"
#equalDOF 2 5 1

puts "restraint"
fix 1 1 1 1;
fix 212 1 1 1;
fix 6 0 1 1;

puts "transformation"
geomTransf PDelta 435
geomTransf Linear 439
geomTransf PDelta 444

puts "material"
uniaxialMaterial Elastic 2 2.060E+005
uniaxialMaterial Steel01 4 345 2.06E+05 1.00E-06
uniaxialMaterial Elastic 204 5.282E+008
uniaxialMaterial Elastic 304 6.338E+008
uniaxialMaterial Elastic 404 9.060E+010
uniaxialMaterial Elastic 205 5.942E+010
uniaxialMaterial Elastic 305 5.942E+010
uniaxialMaterial Elastic 405 6.685E+016

puts "section"
##NF-BEAM
section Fiber 4 {
fiber -1.600E+002 -2.440E+002 9.600E+002 4
fiber -8.000E+001 -2.440E+002 9.600E+002 4
fiber 0.000E+000 -2.440E+002 9.600E+002 4
fiber 8.000E+001 -2.440E+002 9.600E+002 4
fiber 1.600E+002 -2.440E+002 9.600E+002 4
fiber -1.600E+002 2.440E+002 9.600E+002 4
fiber -8.000E+001 2.440E+002 9.600E+002 4
fiber 0.000E+000 2.440E+002 9.600E+002 4
fiber 8.000E+001 2.440E+002 9.600E+002 4
fiber 1.600E+002 2.440E+002 9.600E+002 4
fiber 0.000E+000 -1.904E+002 1.523E+003 4
fiber 0.000E+000 -9.520E+001 1.523E+003 4
fiber 0.000E+000 0.000E+000 1.523E+003 4
fiber 0.000E+000 9.520E+001 1.523E+003 4
fiber 0.000E+000 1.904E+002 1.523E+003 4
}

##ND-F-COL
section Fiber 5 {
patch quad 4 3 1 -750 750 -750 500 750 500 750 750
patch quad 4 3 1 -750 -500 -750 -750 750 -750 750 -500
patch quad 4 1 3 -750 500 -750 -500 -500 -500 -500 500
patch quad 4 1 3 500 500 500 -500 750 -500 750 500
}

section Aggregator 1004 204 Vy 304 Vz 404 T -section 4
section Aggregator 1005 205 Vy 305 Vz 405 T -section 5

puts "element"
element dispBeamColumn 435 1 2 3 1005 435
element dispBeamColumn 439 2 5 3 1004 439
element dispBeamColumn 444 212 5 3 1005 444
element corotTruss 448 5 6 1 2

puts "recorder"
recorder Node -file node.out -time -node 2 5 -dof 1 2 3 disp
recorder Element -file ele.out -time -ele 435 444 localForce
recorder Element -file ele448for.out -time -ele 448 axialForce
recorder Element -file ele448def.out -time -ele 448 deformation

puts "model analysis"
set numModes 1
set lambda [eigen $numModes]
set period "Periods.txt"
set Periods [open $period "w"]
puts $Periods " $lambda"
close $Periods
record
puts "fini model analysis"

## Load Case = DEAD
puts "gravity analysis"
pattern Plain 1 Linear {
eleLoad -ele 439 -type -beamUniform -7.000E+004
}
constraints Plain
numberer Plain
system BandGeneral
test EnergyIncr 1.0e-6 200
algorithm Newton
integrator LoadControl 1.000E-001
analysis Static
analyze 10
loadConst -time 0.0
puts "fini gravity analysis"

puts "pushover analysis"
#PushOver Load Pattern
pattern Plain 2 Linear {
sp 6 1 0.1
}

recorder Node -file Disp2.out -time -node 2 -dof 1 disp
recorder Node -file Reaction1.out -time -node 1 -dof 1 reaction
recorder Node -file Reaction212.out -time -node 212 -dof 1 reaction

# Constraint Handler
constraints Penalty 1.0e14 1.0e14
# Convergence Test
test NormDispIncr 1E-10 100 0
# Integrator
integrator DisplacementControl 2 1 0.1
# Solution Algorithm
algorithm Newton -initial
# DOF Numberer
numberer RCM
# System of Equations
system ProfileSPD
# Analysis Type
analysis Static

# set some parameters
set maxU 5000; # Max displacement
set ok 0
set currentDisp 0.0

while {$ok == 0 && $currentDisp < $maxU} {

set ok [analyze 1]

# if the analysis fails try initial tangent iteration
if {$ok != 0} {
puts "regular newton failed .. lets try an initail stiffness for this step"
test NormDispIncr 1.0e-6 1000
algorithm ModifiedNewton -initial
set ok [analyze 1]
if {$ok == 0} {puts "that worked .. back to regular newton"}
test NormDispIncr 1.0e-6 20
algorithm Newton
}

set currentDisp [nodeDisp 2 1]
}


if {$ok == 0} {
puts "Pushover analysis completed SUCCESSFULLY";
} else {
puts "Pushover analysis FAILED";
}
Post Reply