Convergence Issue

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

Moderators: silvia, selimgunay, Moderators

Post Reply
alima2065
Posts: 13
Joined: Wed Feb 09, 2011 9:15 am
Location: nar

Convergence Issue

Post by alima2065 » Sun Mar 06, 2022 1:45 pm

Hi everybody,
I am modeling an RC beam-column assembly under column removal. In my model, I want to perform a displacement-controlled analysis while material and geometry nonlinearities are considered. For this purpose, I used two different approaches to present beam and columns: 1- dispBeamColumn with fiber section and 2-nonlinearBeamColumn with fiber section. The model is a rather simple one; however, I encountered convergence problems when I ran it. The dispBeamColumn formulation solved the problem but with inaccurate results compared to the actual test. On the other hand, nonlinearBeamColumn could not converge and failed at an early stage of the analysis despite the adaptive solution algorithm I have used. I have to mention when I used elastic steel or elastic concrete the model converged. So I think there is something wrong that I am not aware of that. could you please help me to figure out what I did wrong?
Thank you in advance.

#----------------------------------------- main code-----------------------------------
# SET UP ----------------------------------------------------------------------------
wipe all; # clear memory of all past model definitions
model BasicBuilder -ndm 2 -ndf 3; # Define the model builder, ndm=#dimension, ndf=#dofs
source DisplayModel2D.tcl; # procedure for displaying a 2D perspective of model
source DisplayPlane.tcl; # procedure for displaying a plane in a model

set detFc 36.0
set detFyLong 476.0
set detFuLong 648.0
set detEs 200000.0
set detBs 0.004
set Econ 28200.0

node 1 -6096 0 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 2 6096 0 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 3 -6096 1499 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 4 6096 1499 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 5 -6096 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 6 -5664 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 7 -4792.14 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 8 -3920.29 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 9 -3048.43 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 10 -2176.57 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 11 -1304.71 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 12 -432.86 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 13 0 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 14 432 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 15 1303.86 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 16 2175.71 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 17 3047.57 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 18 3919.43 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 19 4791.29 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 20 5663.14 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 21 6096 1829 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 22 -6096 2159 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 23 6096 2159 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 24 0 2658 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 25 -6096 3658 -mass 1.00E-18 1.00E-18 1.00E-18 ;
node 26 6096 3658 -mass 1.00E-18 1.00E-18 1.00E-18 ;



# BOUNDARY CONDITIONS
fix 1 1 1 1
fix 2 1 1 1

fix 25 1 0 0
fix 26 1 0 0

fix 13 1 0 1
fix 24 1 0 1


set transfTagCorota 1;
geomTransf Corotational $transfTagCorota

set transfTaglinear 2;
geomTransf Linear $transfTaglinear


set IDUFC1 1

# Unconfined concrete (Beams) Story 1-----------------------------------------------------------------------------
uniaxialMaterial Concrete01 $IDUFC1 -$detFc -0.0025 0.0 -0.008;


set IDreinf1 2
set R0 15; # control the transition from elastic to plastic branches
set cR1 0.925; # control the transition from elastic to plastic branches
set cR2 0.15; # control the transition from elastic to plastic branches
uniaxialMaterial Steel01 $IDreinf1 $detFyLong $detEs $detBs;


source Sectionexpriment2.tcl
set crack 1

element elasticBeamColumn 5 5 6 570240 $Econ [expr 20700000000*$crack] 1;
element elasticBeamColumn 12 12 13 570240 $Econ [expr 20700000000*$crack] 1;
element elasticBeamColumn 13 13 14 570240 $Econ [expr 20700000000*$crack] 1;
element elasticBeamColumn 20 20 21 570240 $Econ [expr 20700000000*$crack] 1;


element elasticBeamColumn 3 3 5 746496 $Econ [expr 78480000000*$crack] 1;
element elasticBeamColumn 4 4 21 746496 $Econ [expr 78480000000*$crack] 1;
element elasticBeamColumn 21 5 22 746496 $Econ [expr 78480000000*$crack] 1;
element elasticBeamColumn 22 21 23 746496 $Econ [expr 78480000000*$crack] 1;
element elasticBeamColumn 23 13 24 746496 $Econ [expr 78480000000*$crack] 1;



set elementtype nonlinearBeamColumn
#set elementtype dispBeamColumn
set nitr 5
set BB 2;
set AA 1;
# hinge elements beam 450x450 ---- Story1
element $elementtype 6 6 7 $nitr $BB 1 ;
element $elementtype 7 7 8 $nitr $BB 1 ;
element $elementtype 8 8 9 $nitr $BB 1 ;
element $elementtype 9 9 10 $nitr $BB 1 ;
element $elementtype 10 10 11 $nitr $BB 1 ;
element $elementtype 11 11 12 $nitr $BB 1 ;
element $elementtype 14 14 15 $nitr $BB 1 ;
element $elementtype 15 15 16 $nitr $BB 1 ;
element $elementtype 16 16 17 $nitr $BB 1 ;
element $elementtype 17 17 18 $nitr $BB 1 ;
element $elementtype 18 18 19 $nitr $BB 1 ;
element $elementtype 19 19 20 $nitr $BB 1 ;

element $elementtype 1 1 3 $nitr $AA 1 ;
element $elementtype 2 2 4 $nitr $AA 1 ;
element $elementtype 24 22 25 $nitr $AA 1 ;
element $elementtype 25 23 26 $nitr $AA 1 ;


# GRAVITY LOADS # define gravity load applied to beams and columns -- eleLoad applies loads in local coordinate axis
pattern Plain 100 Linear {

load 24 0 1 0;

}


# display displacement shape of the column
recorder display "NodeNumbers" 10 10 500 500 -wipe
prp 200. 50. 1;
vup 0 1 0;
vpn 0 0 1;
display 1 5 2


recorder Node -file disp_point.txt -node 24 -dof 2 disp;
recorder Node -file reac_base.txt -node 1 2 -dof 2 reaction;


#
#algorithm KrylovNewton;
#integrator DisplacementControl 24 2 -1
#analysis Static;
#
#-----------------------------------------------------------------------------
set Tol 1.0e-7;
set maxNumIter 200;
set printFlag 0;
set TestType NormDispIncr;
set Nsteps 1200
set dtForAnalysis -1

constraints Transformation;
numberer RCM;
system BandGeneral;
test NormDispIncr $Tol $maxNumIter ;
algorithm NewtonLineSearch;
integrator DisplacementControl 24 2 -1
analysis Static;

set algorithmType NewtonLineSearch;
for {set ik 1} {$ik <= $Nsteps} {incr ik 1} {
puts "$ik"
# puts "$ik"
set ok [analyze 1 $dtForAnalysis]
# Convergence
if {$ok != 0} {
puts "Trying Bisection ...";
algorithm NewtonLineSearch <-type Bisection>;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Secant ...";
algorithm NewtonLineSearch <-type Secant>;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying RegulaFalsi ...";
algorithm NewtonLineSearch <-type RegulaFalsi>;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying KrylovNewton ...";
algorithm KrylovNewton;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Newton ...";
algorithm Newton;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying BFGS ...";
algorithm BFGS;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Broyden ...";
algorithm Broyden;
set ok [analyze 1 $dtForAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying HHT 0.9 ...";
integrator HHT 0.9;
set ok [analyze 1 $dtForAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
};
if {$ok != 0} {
puts "Trying OS ...";
integrator AlphaOS 1.00;
algorithm Linear;
set ok [analyze 1 $dtForAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying OSG ...";
integrator AlphaOSGeneralized 1.00;
algorithm Linear;
set ok [analyze 1 $dtForAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying more iterations...";
test $TestType $Tol 1000 $printFlag;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-6 ...";
test $TestType 1.0e-6 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-5 ...";
test $TestType 1.0e-5 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-4 ...";
test $TestType 1.0e-4 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/2.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/4.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/8.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/16.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/32.0]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-3 ...";
test $TestType 1.0e-3 $maxNumIter 0;
set ok [analyze 1 $dtForAnalysis/64.0]
test $TestType $Tol $maxNumIter $printFlag;
};


if {$ok != 0} {
set Nstepsmax [expr $ik-1]
break;
}

}

if {[expr $ik-1] == $Nsteps} {

set AnalysisA [expr 1] } else {

set AnalysisA [expr 0] };

puts "Analysis completion=$AnalysisA"

set fileid10 [open "ConvergenceIndicator.txt" a];
puts $fileid10 "$AnalysisA"
close $fileid10

#-------------------------------------------Sections file-------------------------------------


set nyfiber 20
set nzfiber 20
set coverSecall 75.0;# Column cover to reinforcing steel NA.

# section GEOMETRY beam ends-------------------------------------------------------------
set HSec 660.0; # Column Depth
set BSec 864.0; # Column Width
set coverSec $coverSecall; # Column cover to reinforcing steel NA.
set numBarsSectop 7; # number of longitudinal-reinforcement bars in steel layer. (top)
set numBarsSecbot 6; # number of longitudinal-reinforcement bars in steel layer. (bot)



set barAreaSectop 510.0
set barAreaSecbot 510.0
set SecTag 2; # set tag for symmetric section

# FIBER SECTION properties -------------------------------------------------------------
# symmetric section
# y
# ^
# |
# --------------------- -- --
# | o o o | | -- cover
# | | |
# | | |
# z <--- | + | H
# | | |
# | | |
# | o o o | | -- cover
# --------------------- -- --
# |-------- B --------|
#
# RC section:
set coverY [expr $HSec/2.0]; # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
set coverZ [expr $BSec/2.0]; # The distance from the section y-axis to the edge of the cover concrete -- outer edge of cover concrete
set coreY [expr $coverY-$coverSec ]; # The distance from the section z-axis to the edge of the core concrete -- edge of the core concrete/inner edge of cover concrete
set coreZ [expr $coverZ-$coverSec ]; # The distance from the section y-axis to the edge of the core concrete -- edge of the core concrete/inner edge of cover concrete
set nfY 20; # number of fibers for concrete in y-direction
set nfZ 20; # number of fibers for concrete in z-direction

section fiberSec $SecTag {; # Define the fiber section
patch quadr $IDUFC1 $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch

layer straight $IDreinf1 $numBarsSectop $barAreaSectop $coreY $coreZ $coreY -$coreZ; # top layer reinforcement
layer straight $IDreinf1 $numBarsSecbot $barAreaSecbot -$coreY $coreZ -$coreY -$coreZ; # bottom layer reinfocement
}; # end of fibersection definition



# section GEOMETRY beam ends-------------------------------------------------------------
set HSec 864.0; # Column Depth
set BSec 864.0; # Column Width
set coverSec $coverSecall; # Column cover to reinforcing steel NA.
set numBarsSectop 4; # number of longitudinal-reinforcement bars in steel layer. (top)
set numBarsSecbot 4; # number of longitudinal-reinforcement bars in steel layer. (bot)

set numBarsSectopmid 2;
set numBarsSecbotmid 2;

set barAreaSectop 820.0
set barAreaSecbot 820.0
set SecTag 1; # set tag for symmetric section

# FIBER SECTION properties -------------------------------------------------------------
# symmetric section
# y
# ^
# |
# --------------------- -- --
# | o o o | | -- cover
# | | |
# | | |
# z <--- | + | H
# | | |
# | | |
# | o o o | | -- cover
# --------------------- -- --
# |-------- B --------|
#
# RC section:
set coverY [expr $HSec/2.0]; # The distance from the section z-axis to the edge of the cover concrete -- outer edge of cover concrete
set coverZ [expr $BSec/2.0]; # The distance from the section y-axis to the edge of the cover concrete -- outer edge of cover concrete
set coreY [expr $coverY-$coverSec ]; # The distance from the section z-axis to the edge of the core concrete -- edge of the core concrete/inner edge of cover concrete
set coreZ [expr $coverZ-$coverSec ]; # The distance from the section y-axis to the edge of the core concrete -- edge of the core concrete/inner edge of cover concrete
set nfY 16; # number of fibers for concrete in y-direction
set nfZ 4; # number of fibers for concrete in z-direction

section fiberSec $SecTag {; # Define the fiber section
patch quadr $IDUFC1 $nfZ $nfY -$coverY $coverZ -$coverY -$coverZ $coverY -$coverZ $coverY $coverZ; # Define the concrete patch

layer straight $IDreinf1 $numBarsSectop $barAreaSectop $coreY $coreZ $coreY -$coreZ; # top layer reinforcement
layer straight $IDreinf1 $numBarsSecbot $barAreaSecbot -$coreY $coreZ -$coreY -$coreZ; # bottom layer reinfocement

layer straight $IDreinf1 $numBarsSectopmid $barAreaSectop [expr $coreY/2] $coreZ $coreY -$coreZ; # top layer reinforcement
layer straight $IDreinf1 $numBarsSecbotmid $barAreaSecbot [expr -$coreY/2] $coreZ [expr -$coreY/2] -$coreZ; # bottom layer reinfocement


}; # end of fibersection definition

Post Reply