Convergence Problem: Gravity Analysis - SPSW

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

Moderators: silvia, selimgunay, Moderators

Post Reply
MohamadNajib
Posts: 3
Joined: Fri Jun 19, 2015 5:58 pm
Location: American University of Sharjah

Convergence Problem: Gravity Analysis - SPSW

Post by MohamadNajib » Thu Dec 31, 2015 3:59 am

This script is for SPSW.
However, the gravity analysis is never got convergence.
Can you help me to figure out what's the problem?
Thanks

logFile "Project Title.log"
model BasicBuilder -ndm 2 -ndf 3

# Node tag xCrd yCrd ndf
node 1 0 0 -ndf 3
node 2 78 0 -ndf 3
node 3 156 0 -ndf 3
node 4 234 0 -ndf 3
node 5 312 0 -ndf 3
node 6 0 78 -ndf 3
node 10 312 78 -ndf 3
node 11 0 156 -ndf 3
node 12 78 156 -ndf 3
node 13 156 156 -ndf 3
node 14 234 156 -ndf 3
node 15 312 156 -ndf 3
node 16 0 234 -ndf 3
node 20 312 234 -ndf 3
node 21 0 312 -ndf 3
node 22 78 312 -ndf 3
node 23 156 312 -ndf 3
node 24 234 312 -ndf 3
node 25 312 312 -ndf 3
node 26 0 390 -ndf 3
node 30 312 390 -ndf 3
node 31 0 468 -ndf 3
node 32 78 468 -ndf 3
node 33 156 468 -ndf 3
node 34 234 468 -ndf 3
node 35 312 468 -ndf 3
node 36 624 0 -ndf 3
node 37 624 156 -ndf 3
node 38 624 312 -ndf 3
node 39 624 468 -ndf 3

# SPC tag Dx Dy Rz
fix 1 1 1 0
fix 5 1 1 0
fix 36 1 1 0

# Mass tag mx my mIz
mass 11 0.151656314699793 0 0
mass 15 0.151656314699793 0 0
mass 21 0.151656314699793 0 0
mass 25 0.151656314699793 0 0
mass 31 0.16425983436853 0 0
mass 35 0.16425983436853 0 0
# Rigid Link type mNodeTag sNodeTag
rigidLink bar 37 15
rigidLink bar 38 25
rigidLink bar 39 35
# Material matTag s1p e1p s2p e2p s3p e3p s1n e1n s2n e2n s3n e3n pinchX pinchY D1 D2 beta
uniaxialMaterial Hysteretic 1 36 0.002 36.00026 0.015 0 0.018 -1E-05 -0.002 -1E-05 -0.015 -1E-05 -0.018 1E-05 1 0 0 0
uniaxialMaterial Hysteretic 2 50 0.002 50.0004 0.022 0 0.057 -50 -0.002 -50.0004 -0.022 0 -0.057 1E-05 1 0 0 0
uniaxialMaterial Hysteretic 3 50 0.002 50.0004 0.022 50.0011 0.057 -50 -0.002 -50.0004 -0.022 -50.0011 -0.057 1E-05 1 0 0 0
# Material Material01: matTag E <eta> <Eneg>
uniaxialMaterial Elastic 4 +2.900000E+04 +0.000000E+00
# Section : secTag
section Fiber 1689 {
# LayerStraight : matTag numBar areaBar yStart zStart yEnd zEnd
layer straight 2 16 0.56875 8.37265625 0 7.55234375 0
layer straight 3 33 0.239431818181818 7.2969696969697 0 -7.2969696969697 0
layer straight 2 16 0.56875 -7.55234375 0 -8.37265625 0
}
section Fiber 1876 {
# LayerStraight : matTag numBar areaBar yStart zStart yEnd zEnd
layer straight 2 16 0.4675 9.07875 0 8.44125 0
layer straight 3 33 0.216878787878788 8.16484848484848 0 -8.16484848484848 0
layer straight 2 16 0.4675 -8.44125 0 -9.07875 0
}
section Fiber 24146 {
# LayerStraight : matTag numBar areaBar yStart zStart yEnd zEnd
layer straight 2 16 0.8788125 12.3159375 0 11.2940625 0
layer straight 3 33 0.443575757575758 10.9187878787879 0 -10.9187878787879 0
layer straight 2 16 0.8788125 -11.2940625 0 -12.3159375 0
}
section Fiber 1461 {
# LayerStraight : matTag numBar areaBar yStart zStart yEnd zEnd
layer straight 2 16 0.403125 6.92984375 0 6.32515625 0
layer straight 3 33 0.143295454545455 6.11393939393939 0 -6.11393939393939 0
layer straight 2 16 0.403125 -6.32515625 0 -6.92984375 0
}
section Fiber 1245 {
# LayerStraight : matTag numBar areaBar yStart zStart yEnd zEnd
layer straight 2 16 0.289296875 6.03203125 0 5.49296875 0
layer straight 3 33 0.111159090909091 5.30909090909091 0 -5.30909090909091 0
layer straight 2 16 0.289296875 -5.49296875 0 -6.03203125 0
}
section Fiber 24117 {
# LayerStraight : matTag numBar areaBar yStart zStart yEnd zEnd
layer straight 2 16 0.68 12.1234375 0 11.3265625 0
layer straight 3 33 0.376666666666667 10.9575757575758 0 -10.9575757575758 0
layer straight 2 16 0.68 -11.3265625 0 -12.1234375 0
}
# GeoTran type tag
geomTransf PDelta 1
# Element Strips: eleTag NodeI NodeJ A matTag <-rho rho> <-cMass flag> <-doRayleigh flag>
element truss 1 2 6 4.76533401977238 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 2 3 11 4.76533401977238 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 3 4 12 4.76533401977238 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 4 5 13 4.76533401977238 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 5 10 14 4.76533401977238 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 6 12 16 3.90492648842459 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 7 13 21 3.90492648842459 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 8 14 22 3.90492648842459 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 9 15 23 3.90492648842459 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 10 20 24 3.90492648842459 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 11 22 26 2.38266700988619 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 12 23 31 2.38266700988619 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 13 24 32 2.38266700988619 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 14 25 33 2.38266700988619 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 15 30 34 2.38266700988619 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 16 12 6 4.76533401977238 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 17 13 1 4.76533401977238 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 18 14 2 4.76533401977238 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 19 15 3 4.76533401977238 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 20 10 4 4.76533401977238 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 21 22 16 3.90492648842459 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 22 23 11 3.90492648842459 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 23 24 12 3.90492648842459 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 24 25 13 3.90492648842459 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 25 20 14 3.90492648842459 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 26 32 26 2.38266700988619 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 27 33 21 2.38266700988619 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 28 34 22 2.38266700988619 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 29 35 23 2.38266700988619 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 30 30 24 2.38266700988619 1 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
# Element HBE - VBE: eleTag NodeI NodeJ secTagI Lpi secTagJ Lpj E A Iz geoTranTag <-mass massDens> <-iter maxIters tol>
element beamWithHinges 31 1 2 24117 3.9 24117 3.9 29000 34.4 3540 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 32 2 3 24117 3.9 24117 3.9 29000 34.4 3540 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 33 3 4 24117 3.9 24117 3.9 29000 34.4 3540 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 34 4 5 24117 3.9 24117 3.9 29000 34.4 3540 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 35 11 12 1245 3.9 1245 3.9 29000 13.1 348 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 36 12 13 1245 3.9 1245 3.9 29000 13.1 348 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 37 13 14 1245 3.9 1245 3.9 29000 13.1 348 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 38 14 15 1245 3.9 1245 3.9 29000 13.1 348 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 39 21 22 1461 3.9 1461 3.9 29000 17.9 640 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 40 22 23 1461 3.9 1461 3.9 29000 17.9 640 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 41 23 24 1461 3.9 1461 3.9 29000 17.9 640 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 42 24 25 1461 3.9 1461 3.9 29000 17.9 640 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 43 31 32 1876 3.9 1876 3.9 29000 22.3 1330 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 44 32 33 1876 3.9 1876 3.9 29000 22.3 1330 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 45 33 34 1876 3.9 1876 3.9 29000 22.3 1330 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 46 34 35 1876 3.9 1876 3.9 29000 22.3 1330 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 47 1 6 24146 3.9 24146 3.9 29000 43 4580 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 48 6 11 24146 3.9 24146 3.9 29000 43 4580 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 49 5 10 24146 3.9 24146 3.9 29000 43 4580 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 50 10 15 24146 3.9 24146 3.9 29000 43 4580 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 51 11 16 1876 3.9 1876 3.9 29000 22.3 1330 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 52 16 21 1876 3.9 1876 3.9 29000 22.3 1330 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 53 15 20 1876 3.9 1876 3.9 29000 22.3 1330 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 54 20 25 1876 3.9 1876 3.9 29000 22.3 1330 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 55 21 26 1689 3.9 1689 3.9 29000 26.2 1300 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 56 26 31 1689 3.9 1689 3.9 29000 26.2 1300 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 57 25 30 1689 3.9 1689 3.9 29000 26.2 1300 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
element beamWithHinges 58 30 35 1689 3.9 1689 3.9 29000 26.2 1300 1 -mass +0.000000E+00 -iter 100 +1.000000E-4
# Element Gravity_Column: eleTag NodeI NodeJ A E Iz geoTranTag <alpha d> <-mass massDens> <-cMass>
element elasticBeamColumn 59 36 37 2110 29000 5.97 1 +0.000000E+00 +0.000000E+00 -mass +0.000000E+00
element elasticBeamColumn 60 37 38 2110 29000 5.97 1 +0.000000E+00 +0.000000E+00 -mass +0.000000E+00
element elasticBeamColumn 61 38 39 2110 29000 5.97 1 +0.000000E+00 +0.000000E+00 -mass +0.000000E+00
# Element Gravity_beams(Truss): eleTag NodeI NodeJ A matTag <-rho rho> <-cMass flag> <-doRayleigh flag>
element truss 62 37 15 1310 4 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 63 38 25 1790 4 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
element truss 64 39 35 2230 4 -rho +0.000000E+00 -cMass 0 -doRayleigh 0
timeSeries Linear 1 -factor +1.000000E+00
initialize
pattern Plain 1 1 -fact +1.000000E+00 {
load 11 0 -58.6 0
load 15 0 -58.6 0
load 37 0 -234.4 0
load 21 0 -58.6 0
load 25 0 -58.6 0
load 38 0 -234.4 0
load 31 0 -63.47 0
load 35 0 -63.47 0
load 39 0 -253.89 0
}
# Gravity-analysis parameters -- load-controlled static analysis
set Tol 1.0e-4; # convergence tolerance for test
constraints Plain; # how it handles boundary conditions
numberer Plain; # renumber dof's to minimize band-width (optimization), if you want to
system SparseGeneral; # how to store and solve the system of equations in the analysis
test NormDispIncr $Tol 10 ; # determine if convergence has been achieved at the end of an iteration step
algorithm Newton; # use Newton's solution algorithm: updates tangent stiffness at every iteration
set NstepGravity 100; # apply gravity in 10 steps
set DGravity [expr 1./$NstepGravity]; # first load increment;
integrator LoadControl $DGravity; # determine the next time step for an analysis
analysis Static; # define type of analysis static or transient
analyze $NstepGravity; # apply gravity
# ------------------------------------------------- maintain constant gravity loads and reset time to zero
loadConst -time 0.0

puts "Model Built"
pattern Plain 2 1 -fact +1.000000E+00 {
load 11 0.333333333333333 0 0
load 21 0.666666666666667 0 0
load 31 1 0 0
}
recorder Node -file DFree.out -node 31 -dof 1 disp; # displacements of free nodes
recorder Node -file RBase1.out -node 1 -dof 1 reaction; # support reaction
recorder Node -file RBase2.out -node 5 -dof 1 reaction; # support reaction
set IDctrlNode 31; # node where displacement is read for displacement control
set IDctrlDOF 1; # degree of freedom of displacement read for displacement control
set Dmax 28.08; # maximum displacement of pushover. push to 10% drift.
set Dincr 1; # displacement increment for pushover. you want this to be very small, but not too small to slow down the analysis

# ----------- set up analysis parameters
# CONSTRAINTS handler -- Determines how the constraint equations are enforced in the analysis (http://opensees.berkeley.edu/OpenSees/m ... al/617.htm)
# Plain Constraints -- Removes constrained degrees of freedom from the system of equations (only for homogeneous equations)
# Lagrange Multipliers -- Uses the method of Lagrange multipliers to enforce constraints
# Penalty Method -- Uses penalty numbers to enforce constraints --good for static analysis with non-homogeneous eqns (rigidDiaphragm)
# Transformation Method -- Performs a condensation of constrained degrees of freedom
constraints Plain;

# DOF NUMBERER (number the degrees of freedom in the domain): (http://opensees.berkeley.edu/OpenSees/m ... al/366.htm)
# determines the mapping between equation numbers and degrees-of-freedom
# Plain -- Uses the numbering provided by the user
# RCM -- Renumbers the DOF to minimize the matrix band-width using the Reverse Cuthill-McKee algorithm
numberer Plain

# SYSTEM (http://opensees.berkeley.edu/OpenSees/m ... al/371.htm)
# Linear Equation Solvers (how to store and solve the system of equations in the analysis)
# -- provide the solution of the linear system of equations Ku = P. Each solver is tailored to a specific matrix topology.
# ProfileSPD -- Direct profile solver for symmetric positive definite matrices
# BandGeneral -- Direct solver for banded unsymmetric matrices
# BandSPD -- Direct solver for banded symmetric positive definite matrices
# SparseGeneral -- Direct solver for unsymmetric sparse matrices
# SparseSPD -- Direct solver for symmetric sparse matrices
# UmfPack -- Direct UmfPack solver for unsymmetric matrices
system SparseGeneral

# TEST: # convergence test to
# Convergence TEST (http://opensees.berkeley.edu/OpenSees/m ... al/360.htm)
# -- Accept the current state of the domain as being on the converged solution path
# -- determine if convergence has been achieved at the end of an iteration step
# NormUnbalance -- Specifies a tolerance on the norm of the unbalanced load at the current iteration
# NormDispIncr -- Specifies a tolerance on the norm of the displacement increments at the current iteration
# EnergyIncr-- Specifies a tolerance on the inner product of the unbalanced load and displacement increments at the current iteration
set Tol 1.e-4; # Convergence Test: tolerance
set maxNumIter 10; # Convergence Test: maximum number of iterations that will be performed before "failure to converge" is returned
set printFlag 0; # Convergence Test: flag used to print information on convergence (optional) # 1: print information on each step;
set TestType EnergyIncr ; # Convergence-test type
test $TestType $Tol $maxNumIter $printFlag;

# Solution ALGORITHM: -- Iterate from the last time step to the current (http://opensees.berkeley.edu/OpenSees/m ... al/682.htm)
# Linear -- Uses the solution at the first iteration and continues
# Newton -- Uses the tangent at the current iteration to iterate to convergence
# ModifiedNewton -- Uses the tangent at the first iteration to iterate to convergence
set algorithmType Newton
algorithm $algorithmType;

# Static INTEGRATOR: -- determine the next time step for an analysis (http://opensees.berkeley.edu/OpenSees/m ... al/689.htm)
# LoadControl -- Specifies the incremental load factor to be applied to the loads in the domain
# DisplacementControl -- Specifies the incremental displacement at a specified DOF in the domain
# Minimum Unbalanced Displacement Norm -- Specifies the incremental load factor such that the residual displacement norm in minimized
# Arc Length -- Specifies the incremental arc-length of the load-displacement path
# Transient INTEGRATOR: -- determine the next time step for an analysis including inertial effects
# Newmark -- The two parameter time-stepping method developed by Newmark
# HHT -- The three parameter Hilbert-Hughes-Taylor time-stepping method
# Central Difference -- Approximates velocity and acceleration by centered finite differences of displacement
integrator DisplacementControl $IDctrlNode $IDctrlDOF $Dincr

# ANALYSIS -- defines what type of analysis is to be performed (http://opensees.berkeley.edu/OpenSees/m ... al/324.htm)
# Static Analysis -- solves the KU=R problem, without the mass or damping matrices.
# Transient Analysis -- solves the time-dependent analysis. The time step in this type of analysis is constant. The time step in the output is also constant.
# variableTransient Analysis -- performs the same analysis type as the Transient Analysis object. The time step, however, is variable. This method is used when
# there are convergence problems with the Transient Analysis object at a peak or when the time step is too small. The time step in the output is also variable.
analysis Static

# --------------------------------- perform Static Pushover Analysis
set Nsteps [expr int($Dmax/$Dincr)]; # number of pushover analysis steps
set ok [analyze $Nsteps]; # this will return zero if no convergence problems were encountered

# ---------------------------------- in case of convergence problems
if {$ok != 0} {
# change some analysis parameters to achieve convergence
# performance is slower inside this loop
set ok 0;
set controlDisp 0.0; # start from zero
set D0 0.0; # start from zero
set Dstep [expr ($controlDisp-$D0)/($Dmax-$D0)]
while {$Dstep < 1.0 && $ok == 0} {
set controlDisp [nodeDisp $IDctrlNode $IDctrlDOF ]
set Dstep [expr ($controlDisp-$D0)/($Dmax-$D0)]
set ok [analyze 1 ]
if {$ok != 0} {
puts "Trying Newton with Initial Tangent .."
test NormDispIncr $Tol 2000 0
algorithm Newton -initial
set ok [analyze 1 ]
test $TestType $Tol $maxNumIter 0
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying Broyden .."
algorithm Broyden 8
set ok [analyze 1 ]
algorithm $algorithmType
}
if {$ok != 0} {
puts "Trying NewtonWithLineSearch .."
algorithm NewtonLineSearch .8
set ok [analyze 1 ]
algorithm $algorithmType
}
}
}; # end if ok !0

puts "DonePushover"

MohamadNajib
Posts: 3
Joined: Fri Jun 19, 2015 5:58 pm
Location: American University of Sharjah

Re: Convergence Problem: Gravity Analysis - SPSW

Post by MohamadNajib » Sat Jan 02, 2016 2:27 am

Hi
The problem had been solved.
I did an eigenvalue analysis to make sure that there are no problems in the model.
The issue was because of the gravity loads.
Thanks,

MohsenShani
Posts: 36
Joined: Sat Mar 29, 2014 3:49 pm
Location: Iran/Mazandaraan/babol,,,University of Science and Research of Tehran
Contact:

Re: Convergence Problem: Gravity Analysis - SPSW

Post by MohsenShani » Sun Jan 03, 2016 3:39 am

i see your model.
the model is not correct. some problem in your model.
if you see the node displacement , You will find

ahmadbsr
Posts: 29
Joined: Thu Feb 28, 2019 5:43 am
Location: shahid chamran

Re: Convergence Problem: Gravity Analysis - SPSW

Post by ahmadbsr » Sun Jun 14, 2020 4:32 am

MohsenShani wrote:
Sun Jan 03, 2016 3:39 am
i see your model.
the model is not correct. some problem in your model.
if you see the node displacement , You will find
I have the problem in WARNING: CTestNormDispIncr::test() - failed to converge
will be thankful if you could help me

MohsenShani
Posts: 36
Joined: Sat Mar 29, 2014 3:49 pm
Location: Iran/Mazandaraan/babol,,,University of Science and Research of Tehran
Contact:

Re: Convergence Problem: Gravity Analysis - SPSW

Post by MohsenShani » Tue Nov 17, 2020 4:52 am

Its Okey. You can get rid of this error by changing the analysis motor

Post Reply