Hi everybody,
As you know Total updating in Adaptive pushover analysis encounters with divergence in some structures specially high-rise buildings.So we can use Incremental updating instead.Can anybody help me to write the script of this analysis?
Incremental updating in Adaptive Pushover Analysis
Moderators: silvia, selimgunay, Moderators
-
- Posts: 43
- Joined: Fri Jan 29, 2016 10:20 pm
Re: Incremental updating in Adaptive Pushover Analysis
Dear Aydindaei
Eventhough the below code is written for eqrthquake, it will help you understand, implementing adaptive step size in the pushover analyses
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
set filename "DtStepSize.dat"
set DtStepSizeID [open $filename r]; #Load the vector with the step sizes
set DtStepSizeValues [read $DtStepSizeID]
close $DtStepSizeID
if {$ok != 0} { ; # if analysis was not successful.
# change some analysis parameters to achieve convergence
# performance is slower inside this loop
# Time-controlled analysis
set ok 0;
set controlTime [getTime];
while {$controlTime < $TmaxAnalysis && $ok == 0} {
set ok [analyze 1 $DtAnalysis]
set controlTime [getTime]
set ok [analyze 1 $DtAnalysis]
puts "Current Time in the Domain = $controlTime ---------------------------------------------------------------";
if {$ok != 0} {
foreach DtStepFactor $DtStepSizeValues {
set DtStepFactored [expr $DtAnalysis*$DtStepFactor]
puts "******************************************************************************************************************************************************";
puts "********* DtStepFactored = $DtStepFactored and TmaxAnalysis = $TmaxAnalysis";
puts "******************************************************************************************************************************************************";
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test EnergyIncr $Tol_2 100 0
algorithm Newton -initial
set ok [analyze 1 $DtStepFactored]
test $TestType $Tol_2 $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Simple Newton .."
test EnergyIncr $Tol_2 100 0
algorithm Newton
set ok [analyze 1 $DtStepFactored]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 $DtStepFactored]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 $DtStepFactored]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.6
set ok [analyze 1 $DtStepFactored]
algorithm $algorithmType
}
if {$ok == 0} {
test $TestType $Tol_1 $maxNumIter 0
break
}
}
}
}
}; # end if ok !0
Eventhough the below code is written for eqrthquake, it will help you understand, implementing adaptive step size in the pushover analyses
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
set filename "DtStepSize.dat"
set DtStepSizeID [open $filename r]; #Load the vector with the step sizes
set DtStepSizeValues [read $DtStepSizeID]
close $DtStepSizeID
if {$ok != 0} { ; # if analysis was not successful.
# change some analysis parameters to achieve convergence
# performance is slower inside this loop
# Time-controlled analysis
set ok 0;
set controlTime [getTime];
while {$controlTime < $TmaxAnalysis && $ok == 0} {
set ok [analyze 1 $DtAnalysis]
set controlTime [getTime]
set ok [analyze 1 $DtAnalysis]
puts "Current Time in the Domain = $controlTime ---------------------------------------------------------------";
if {$ok != 0} {
foreach DtStepFactor $DtStepSizeValues {
set DtStepFactored [expr $DtAnalysis*$DtStepFactor]
puts "******************************************************************************************************************************************************";
puts "********* DtStepFactored = $DtStepFactored and TmaxAnalysis = $TmaxAnalysis";
puts "******************************************************************************************************************************************************";
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test EnergyIncr $Tol_2 100 0
algorithm Newton -initial
set ok [analyze 1 $DtStepFactored]
test $TestType $Tol_2 $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Simple Newton .."
test EnergyIncr $Tol_2 100 0
algorithm Newton
set ok [analyze 1 $DtStepFactored]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 $DtStepFactored]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 $DtStepFactored]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch 0.6
set ok [analyze 1 $DtStepFactored]
algorithm $algorithmType
}
if {$ok == 0} {
test $TestType $Tol_1 $maxNumIter 0
break
}
}
}
}
}; # end if ok !0