Convergence problems with force-based elements
Moderators: silvia, selimgunay, Moderators
Convergence problems with force-based elements
Hi,
I am modelling a 5-story, 2-bay and 1-bay in the horizontal two directions, RC structure. For performing a nonlinear seismic analysis, I once used a dispbeamcolumn element and then forcebeamcolumn element for modeling both beams and columns. In terms of convergence, the dispbeamcolumn element was okay, but the model with the forcebeamcolumn element is not converging no matter how many integration points I used (I used the max allowable no. of integration points) and used an analysis convergence approach that incorporates different nonlinear algorithms, largely reduced analysis time steps and largely increased tolerance values. But non of this worked. What could be the problem? I appreciate any help in advance.
This is the unconfined concrete material for covers:
uniaxialMaterial Concrete02 10 -40000.00 -0.002000 -8000.00 -0.004000 0.1 -4000.00 3000000.00
the confined concrete material for the core:
uniaxialMaterial Concrete02 20 -44720.00 -0.003180 -44720.00 -0.007690 0.1 -4000.00 3000000.00
the steel material:
uniaxialMaterial Steel02 11 400000.00 200000000.00 0.05 20.0 0.925 0.15 0.005 1.0 0.005 1.0
The column cross-section:
section Fiber 10 {
# define the core patch
patch quad 20 20 20 -0.195 -0.195 0.195 -0.195 0.195 0.195 -0.195 0.195
# define the cover patches
patch quad 10 5 20 -0.225 -0.195 -0.195 -0.195 -0.195 0.195 -0.225 0.195
patch quad 10 5 20 0.195 -0.195 0.225 -0.195 0.225 0.195 0.195 0.195
patch quad 10 20 5 -0.225 -0.225 0.225 -0.225 0.225 -0.195 -0.225 -0.195
patch quad 10 20 5 -0.225 0.195 0.225 0.195 0.225 0.225 -0.225 0.225
# Define reinforcing bars
layer straight 11 3 0.000491 -0.195 -0.195 0.195 -0.195
layer straight 11 2 0.000491 -0.195 0.000 0.195 0.000
layer straight 11 3 0.000491 -0.195 0.195 0.195 0.195
};
uniaxialMaterial Elastic 110 85429.69
uniaxialMaterial Elastic 210 2109375.00
section Aggregator 310 210 Vy 210 Vz 110 T -section 10
The dispbeamcolumn element for columns (each column is defined using 3 elements and 3 integration points) :
element dispBeamColumn 11111 0011 11111 3 310 1 -integration Lobatto
the forcebeamcolumn element for columns (each column is defined using 1 element and 10 integration points):
element forceBeamColumn 11111 0011 0111 10 310 1
I am modelling a 5-story, 2-bay and 1-bay in the horizontal two directions, RC structure. For performing a nonlinear seismic analysis, I once used a dispbeamcolumn element and then forcebeamcolumn element for modeling both beams and columns. In terms of convergence, the dispbeamcolumn element was okay, but the model with the forcebeamcolumn element is not converging no matter how many integration points I used (I used the max allowable no. of integration points) and used an analysis convergence approach that incorporates different nonlinear algorithms, largely reduced analysis time steps and largely increased tolerance values. But non of this worked. What could be the problem? I appreciate any help in advance.
This is the unconfined concrete material for covers:
uniaxialMaterial Concrete02 10 -40000.00 -0.002000 -8000.00 -0.004000 0.1 -4000.00 3000000.00
the confined concrete material for the core:
uniaxialMaterial Concrete02 20 -44720.00 -0.003180 -44720.00 -0.007690 0.1 -4000.00 3000000.00
the steel material:
uniaxialMaterial Steel02 11 400000.00 200000000.00 0.05 20.0 0.925 0.15 0.005 1.0 0.005 1.0
The column cross-section:
section Fiber 10 {
# define the core patch
patch quad 20 20 20 -0.195 -0.195 0.195 -0.195 0.195 0.195 -0.195 0.195
# define the cover patches
patch quad 10 5 20 -0.225 -0.195 -0.195 -0.195 -0.195 0.195 -0.225 0.195
patch quad 10 5 20 0.195 -0.195 0.225 -0.195 0.225 0.195 0.195 0.195
patch quad 10 20 5 -0.225 -0.225 0.225 -0.225 0.225 -0.195 -0.225 -0.195
patch quad 10 20 5 -0.225 0.195 0.225 0.195 0.225 0.225 -0.225 0.225
# Define reinforcing bars
layer straight 11 3 0.000491 -0.195 -0.195 0.195 -0.195
layer straight 11 2 0.000491 -0.195 0.000 0.195 0.000
layer straight 11 3 0.000491 -0.195 0.195 0.195 0.195
};
uniaxialMaterial Elastic 110 85429.69
uniaxialMaterial Elastic 210 2109375.00
section Aggregator 310 210 Vy 210 Vz 110 T -section 10
The dispbeamcolumn element for columns (each column is defined using 3 elements and 3 integration points) :
element dispBeamColumn 11111 0011 11111 3 310 1 -integration Lobatto
the forcebeamcolumn element for columns (each column is defined using 1 element and 10 integration points):
element forceBeamColumn 11111 0011 0111 10 310 1
Re: Convergence problems with force-based elements
This forum is generally for OpenSeesPy (Python) specific questions.
But, perhaps you can make all your uniaxialMaterials Elastic and see if you have convergence problems.
Here are some steps to follow: https://wp.me/pbejzW-1C
It's difficult to say what the problem is based on your post. A screen shot of the output would help.
But, perhaps you can make all your uniaxialMaterials Elastic and see if you have convergence problems.
Here are some steps to follow: https://wp.me/pbejzW-1C
It's difficult to say what the problem is based on your post. A screen shot of the output would help.
Re: Convergence problems with force-based elements
Sorry for posting here.mhscott wrote: ↑Fri Aug 28, 2020 8:24 am This forum is generally for OpenSeesPy (Python) specific questions.
But, perhaps you can make all your uniaxialMaterials Elastic and see if you have convergence problems.
Here are some steps to follow: https://wp.me/pbejzW-1C
It's difficult to say what the problem is based on your post. A screen shot of the output would help.
I already carried out analysis of the model using a dispbeamcolumn element and it was okay. The only change was replacing the dispbeamcolumn element with a forcebeamcolumn element. This is the analysis output ..
WARNING - ForceBeamColumn3d::update - failed to get compatible element forces & deformations for element: 11111(dW: << 1.83431e-009, dW0: 0.0173102)
WARNING - ForceBeamColumn3d::update - failed to get compatible element forces & deformations for element: 11121(dW: << 1.77563e-006, dW0: 0.0141372)
WARNING - ForceBeamColumn3d::update - failed to get compatible element forces & deformations for element: 11211(dW: << 2.54958e-007, dW0: 0.0318291)
WARNING - ForceBeamColumn3d::update - failed to get compatible element forces & deformations for element: 11221(dW: << 2.59173e-005, dW0: 0.315433)
WARNING - ForceBeamColumn3d::update - failed to get compatible element forces & deformations for element: 11321(dW: << 2.65351e-006, dW0: 0.0124833)
WARNING - ForceBeamColumn3d::update - failed to get compatible element forces & deformations for element: 11111(dW: << 1.83431e-009, dW0: 0.000750978)
WARNING - ForceBeamColumn3d::update - failed to get compatible element forces & deformations for element: 11121(dW: << 1.77563e-006, dW0: 0.000139)
WARNING - ForceBeamColumn3d::update - failed to get compatible element forces & deformations for element: 11211(dW: << 2.54958e-007, dW0: 0.00364059)
WARNING - ForceBeamColumn3d::update - failed to get compatible element forces & deformations for element: 11221(dW: << 2.59173e-005, dW0: 0.00767979)
WARNING - ForceBeamColumn3d::update - failed to get compatible element forces & deformations for element: 11321(dW: << 2.65351e-006, dW0: 0.00086629)
Domain::update - domain failed in update
AlphaOS::newStep() - failed to update the domain
DirectIntegrationAnalysis::analyze() - the Integrator failed at time 0.141
OpenSees > analyze failed, returned: -2 error flag
Trying OSG ...
Re: Convergence problems with force-based elements
Try with Newmark instead of alphaOS. Also, see if you have issues with all elastic materials.
Re: Convergence problems with force-based elements
I use newmark as the primary integrator. But then I use a convergence approach that incorporates different nonlinear algorithms, integrators, time step sizes and tolerance values. Here it is:
# %%% DYNAMIC ANALYSIS PARAMETERS %%%
constraints Transformation;
numberer Plain;
system BandSPD
set Tol 1.0e-3;
set maxNumIter 30;
set printFlag 0;
set NewmarkGamma 0.5;
set NewmarkBeta 0.25;
set TestType RelativeNormDispIncr;
set algorithmType Newton;
test $TestType $Tol $maxNumIter $printFlag;
algorithm $algorithmType;
integrator Newmark $NewmarkGamma $NewmarkBeta;
analysis Transient;
# %%% DYNAMIC ANALAYSIS %%%
set ok [analyze $Nsteps $dtAnalysis];
if {$ok != 0} {
set ok 0;
set controlTime [getTime];
while {($controlTime<$TmaxAnalysis) && $ok == 0} {
set ok [analyze 1 $dtAnalysis];
set controlTime [getTime];
if {$ok != 0} {
puts "Trying Newton with Initial Tangent ..";
test RelativeNormDispIncr 5.0e-3 20 0;
algorithm Newton -initial;
set ok [analyze 1 $dtAnalysis];
};
if {$ok != 0} {
puts "Relieving Convergence Criteria 1 ..";
test RelativeEnergyIncr 1.0e-3 40 5;
algorithm Newton -initial;
set ok [analyze 1 $dtAnalysis];
};
if {$ok != 0} {
puts "Relieving Convergence Criteria 2 ..";
test RelativeEnergyIncr 5.0e-1 40 5;
algorithm Newton -initial;
set ok [analyze 1 $dtAnalysis];
};
if {$ok != 0} {
puts "Trying Newton ..";
test RelativeNormDispIncr 1.0e-3 20 0;
algorithm Newton;
set ok [analyze 1 $dtAnalysis];
};
if {$ok != 0} {
puts "Trying Bisection ...";
algorithm NewtonLineSearch <-type Bisection>;
set ok [analyze 1 $dtAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Secant ...";
algorithm NewtonLineSearch <-type Secant>;
set ok [analyze 1 $dtAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying RegulaFalsi ...";
algorithm NewtonLineSearch <-type RegulaFalsi>;
set ok [analyze 1 $dtAnalysis]
algorithm $algorithmType;
};
# if {$ok != 0} {
# puts "Trying KrylovNewton ...";
# algorithm KrylovNewton;
# set ok [analyze 1 $dtAnalysis]
# algorithm $algorithmType;
# };
# if {$ok != 0} {
# puts "Trying Newton ...";
# algorithm Newton;
# set ok [analyze 1 $dtAnalysis]
# algorithm $algorithmType;
# };
if {$ok != 0} {
puts "Trying BFGS ...";
algorithm BFGS;
set ok [analyze 1 $dtAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying Broyden ...";
algorithm Broyden;
set ok [analyze 1 $dtAnalysis]
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying HHT 0.9 ...";
integrator HHT 0.9;
set ok [analyze 1 $dtAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
};
if {$ok != 0} {
puts "Trying OS ...";
integrator AlphaOS 1.00;
algorithm Linear;
set ok [analyze 1 $dtAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying OSG ...";
integrator AlphaOSGeneralized 1.00;
algorithm Linear;
set ok [analyze 1 $dtAnalysis]
# integrator TRBDF2;
integrator Newmark $NewmarkGamma $NewmarkBeta;
algorithm $algorithmType;
};
if {$ok != 0} {
puts "Trying more iterations...";
test $TestType $Tol 1000 $printFlag;
set ok [analyze 1 $dtAnalysis]
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 [expr $dtAnalysis/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 [expr $dtAnalysis/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 [expr $dtAnalysis/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 [expr $dtAnalysis/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 [expr $dtAnalysis/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 [expr $dtAnalysis/64.0]]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 5.0e-3 ...";
test $TestType 5.0e-3 $maxNumIter 0;
set ok [analyze 1 [expr $dtAnalysis/64.0]]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-2 ...";
test $TestType 1.0e-2 $maxNumIter 0;
set ok [analyze 1 [expr $dtAnalysis/64.0]]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 5.0e-2 ...";
test $TestType 5.0e-2 $maxNumIter 0;
set ok [analyze 1 [expr $dtAnalysis/64.0]]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0e-1 ...";
test $TestType 1.0e-1 $maxNumIter 0;
set ok [analyze 1 [expr $dtAnalysis/64.0]]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 5.0e-1 ...";
test $TestType 5.0e-1 $maxNumIter 0;
set ok [analyze 1 [expr $dtAnalysis/64.0]]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 1.0 ...";
test $TestType 1.0 $maxNumIter 0;
set ok [analyze 1 [expr $dtAnalysis/64.0]]
test $TestType $Tol $maxNumIter $printFlag;
};
if {$ok != 0} {
puts "Trying tolerance 2.0 ...";
test $TestType 2.0 $maxNumIter 0;
set ok [analyze 1 [expr $dtAnalysis/64.0]]
test $TestType $Tol $maxNumIter $printFlag;
};
test $TestType $Tol $maxNumIter $printFlag;
algorithm $algorithmType;
};
};
puts "End of Dynamic analysis"
wipe;
Re: Convergence problems with force-based elements
OK, try making the fibers elastic. This will help determine if it's a model issue of an element issue.
-
- Posts: 916
- Joined: Mon Sep 09, 2013 8:50 pm
- Location: University of California, Berkeley
Re: Convergence problems with force-based elements
There are some recommendations here starting with page 12 on the type and sequence of nonlinear equation solvers, convergence test type, convergence tolerance and integration time step to be used with adaptive solution strategies:
https://www.researchgate.net/profile/Kh ... alyses.pdf
https://www.researchgate.net/profile/Kh ... alyses.pdf
Re: Convergence problems with force-based elements
What type of damping are you using? Rayleigh or modal?