Problem with RelativeNormDispIncr test command

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

Moderators: silvia, selimgunay, Moderators

Post Reply
Wenwen
Posts: 5
Joined: Mon Sep 24, 2012 6:25 am
Location: Chongqing

Problem with RelativeNormDispIncr test command

Post by Wenwen »

Hi, I build a model to do cyclic analysis. And I can get the expected result if I use the NormDispIncr test command. But when I use RelativeNormDispIncr test command, it can 't get convergence at the beginning of the analysis.
How to solve the problem if I want to use the RelativeNormDispIncr test command ?
Thank you and best wishes.

#cyclic load analysis of cantilever column using ModIMKPeakOriented model
#Units:N,m
wipe all;
model basic -ndm 2 -ndf 3;

set NO TP1; #specimen No.
set dir results-CPH;
file mkdir $dir;
logFile $dir/$NO-errorFile.txt;

#define node
node 1 0.0 0.0;
node 2 0.0 0.0;
node 3 0.0 1.245;

fix 1 1 1 1;

# define material properties
set Ec 2.8e10; #Young's modulus

# define column section W24x131 for Story 1 & 2
set Ac 0.16; # cross-sectional area
set Ic 2.43e-3; # moment of inertia
set Ic [expr 0.20*$Ic]; #0.35
set My 187e3; # yield moment

set n 10.0; # stiffness multiplier for rotational spring
set Ic [expr $Ic*($n+1.0)/$n];
set Ks [expr $n*3.0*$Ec*$Ic/1.245]; #塑性铰初始刚度

# set up geometric transformations of element
set PDeltaTransf 1;
# geomTransf PDelta $PDeltaTransf; # PDelta transformation
geomTransf Linear $PDeltaTransf; #不考虑PDelta 效应

# define elastic beam elements
element elasticBeamColumn 2 2 3 $Ac $Ec [expr 1.0*$Ic] $PDeltaTransf;

#plastic hinge parameters
set McMy 1.13; # ratio of capping moment to yield moment, Mc / My 1.13
set LS 0.68; # basic strength deterioration (a very large # = no cyclic deterioration) 0.72
set LK 0.68; # unloading stiffness deterioration (a very large # = no cyclic deterioration)
set LA 0.68; # accelerated reloading stiffness deterioration (a very large # = no cyclic deterioration)
set LD 0.68; # post-capping strength deterioration (a very large # = no deterioration)
set cS 1.0; # exponent for basic strength deterioration (c = 1.0 for no deterioration)
set cK 1.0; # exponent for unloading stiffness deterioration (c = 1.0 for no deterioration)
set cA 1.0; # exponent for accelerated reloading stiffness deterioration (c = 1.0 for no deterioration)
set cD 1.0; # exponent for post-capping strength deterioration (c = 1.0 for no deterioration)
set th_pP 0.073; # plastic rot capacity for pos loading 0.0305
set th_pN 0.073; # plastic rot capacity for neg loading
set th_pcP 0.066; # post-capping rot capacity for pos loading 0.177
set th_pcN 0.066; # post-capping rot capacity for neg loading
set ResP 0.2; # residual strength ratio for pos loading
set ResN 0.2; # residual strength ratio for neg loading
set th_uP 0.145; # ultimate rot capacity for pos loading????
set th_uN 0.145; # ultimate rot capacity for neg loading????
set DP 1.0; # rate of cyclic deterioration for pos loading
set DN 1.0; # rate of cyclic deterioration for neg loading
set a_mem [expr ($n+1.0)*($My*($McMy-1.0)) / ($Ks*$th_pP)]; # strain hardening ratio of spring
set b [expr ($a_mem)/(1.0+$n*(1.0-$a_mem))];
# set b [expr $My*($McMy-1.0) / ($Ks*$th_pP)];

proc rotSpring2DModIKPeakOrientedModel {eleID nodeR nodeC K asPos asNeg MyPos MyNeg LS LK LA LD cS cK cA cD th_pP th_pN th_pcP th_pcN ResP ResN th_uP th_uN DP DN} {
#
# Create the zero length element
uniaxialMaterial ModIMKPeakOriented $eleID $K $asPos $asNeg $MyPos $MyNeg $LS $LK $LA $LD $cS $cK $cA $cD $th_pP $th_pN $th_pcP $th_pcN $ResP $ResN $th_uP $th_uN $DP $DN;

element zeroLength $eleID $nodeR $nodeC -mat $eleID -dir 6

# Constrain the translational DOF with a multi-point constraint
# retained constrained DOF_1 DOF_2 ... DOF_n
equalDOF $nodeR $nodeC 1 2
}

#define plastic hinge
rotSpring2DModIKPeakOrientedModel 1 1 2 $Ks $b $b $My [expr -1.0*$My] $LS $LK $LA $LD $cS $cK $cA $cD $th_pP $th_pN $th_pcP $th_pcN $ResP $ResN $th_uP $th_uN $DP $DN;

#define lead load
set P -157000.0;
pattern Plain 1 Constant {
load 3 0.0 $P 0.0
}

#gravity analysis
constraints Plain;
numberer Plain;
system BandGeneral;
#test NormDispIncr 1.0e-8 500 1;
test RelativeNormDispIncr 1.0e-8 500 1;
algorithm Newton;
integrator LoadControl 0;
analysis Static;
analyze 1;
puts "***gravity analysis finished"

#define recorder
recorder Node -file $dir/$NO-disp_2.out -time -node 3 -dof 1 disp;
loadConst -time 0.0;

#cyclic load analysis
set dispNode 3;
set dU 0.5e-3;
pattern Plain 2 Linear {
load $dispNode 1.0 0.0 0.0
}

#run cyclic load analysis
for {set ii 1} {$ii <=3} {incr ii} {
integrator DisplacementControl $dispNode 1 $dU;
analyze [expr 3*$ii*12];
integrator DisplacementControl $dispNode 1 -$dU;
analyze [expr 6*$ii*12];
integrator DisplacementControl $dispNode 1 $dU;
analyze [expr 3*$ii*12];
}

puts "***cyclic load analysis finished"
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Problem with RelativeNormDispIncr test command

Post by vesna »

Try to increase the tolerance.
Wenwen
Posts: 5
Joined: Mon Sep 24, 2012 6:25 am
Location: Chongqing

Re: Problem with RelativeNormDispIncr test command

Post by Wenwen »

vesna wrote:
> Try to increase the tolerance.

Hi vesna. Thanks for your kind help. I increased the tolerance to 1e-1, but it still can't get convergence at the first step of lateral loading. Is there something wrong with my model ?
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: Problem with RelativeNormDispIncr test command

Post by vesna »

to check your model run the analysis with the NormDispIncr test and look at the results to see if they make sense.
Wenwen
Posts: 5
Joined: Mon Sep 24, 2012 6:25 am
Location: Chongqing

Re: Problem with RelativeNormDispIncr test command

Post by Wenwen »

vesna wrote:
> to check your model run the analysis with the NormDispIncr test and look at
> the results to see if they make sense.

It can get convergence when use the NormDispIncr test with the tolerance 1e-8.
rossik
Posts: 1
Joined: Fri Nov 01, 2013 12:16 pm

Re: Problem with RelativeNormDispIncr test command

Post by rossik »

Wenwen wrote:
> Hi, I build a model to do cyclic analysis. And I can get the expected
> result if I use the NormDispIncr test command. But when I use
> RelativeNormDispIncr test command, it can 't get convergence at the
> beginning of the analysis.
> How to solve the problem if I want to use the RelativeNormDispIncr test
> command ?
> Thank you and best wishes.
>
> #cyclic load analysis of cantilever column using ModIMKPeakOriented model
> #Units:N,m
> wipe all;
> model basic -ndm 2 -ndf 3;
>
> set NO TP1; #specimen No.
> set dir results-CPH;
> file mkdir $dir;
> logFile $dir/$NO-errorFile.txt;
>
> #define node
> node 1 0.0 0.0;
> node 2 0.0 0.0;
> node 3 0.0 1.245;
>
> fix 1 1 1 1;
>
> # define material properties
> set Ec 2.8e10; #Young's modulus
>
> # define column section W24x131 for Story 1 & 2
> set Ac 0.16; # cross-sectional area
> set Ic 2.43e-3; # moment of inertia
> set Ic [expr 0.20*$Ic]; #0.35
> set My 187e3; # yield moment
>
> set n 10.0; # stiffness multiplier for rotational spring
> set Ic [expr $Ic*($n+1.0)/$n];
> set Ks [expr $n*3.0*$Ec*$Ic/1.245]; #塑性铰初始刚度
>
> # set up geometric transformations of element
> set PDeltaTransf 1;
> # geomTransf PDelta $PDeltaTransf; # PDelta transformation
> geomTransf Linear $PDeltaTransf; #不考虑PDelta 效应
>
> # define elastic beam elements
> element elasticBeamColumn 2 2 3 $Ac $Ec [expr 1.0*$Ic] $PDeltaTransf;
>
> #plastic hinge parameters
> set McMy 1.13; # ratio of capping moment to yield moment, Mc / My
> 1.13
> set LS 0.68; # basic strength deterioration (a very large # = no cyclic
> deterioration) 0.72
> set LK 0.68; # unloading stiffness deterioration (a very large # = no
> cyclic deterioration)
> set LA 0.68; # accelerated reloading stiffness deterioration (a very
> large # = no cyclic deterioration)
> set LD 0.68; # post-capping strength deterioration (a very large # = no
> deterioration)
> set cS 1.0; # exponent for basic strength deterioration (c = 1.0 for no
> deterioration)
> set cK 1.0; # exponent for unloading stiffness deterioration (c = 1.0
> for no deterioration)
> set cA 1.0; # exponent for accelerated reloading stiffness
> deterioration (c = 1.0 for no deterioration)
> set cD 1.0; # exponent for post-capping strength deterioration (c = 1.0
> for no deterioration)
> set th_pP 0.073; # plastic rot capacity for pos loading 0.0305
> set th_pN 0.073; # plastic rot capacity for neg loading
> set th_pcP 0.066; # post-capping rot capacity for pos loading 0.177
> set th_pcN 0.066; # post-capping rot capacity for neg loading
> set ResP 0.2; # residual strength ratio for pos loading
> set ResN 0.2; # residual strength ratio for neg loading
> set th_uP 0.145; # ultimate rot capacity for pos loading????
> set th_uN 0.145; # ultimate rot capacity for neg loading????
> set DP 1.0; # rate of cyclic deterioration for pos loading
> set DN 1.0; # rate of cyclic deterioration for neg loading
> set a_mem [expr ($n+1.0)*($My*($McMy-1.0)) / ($Ks*$th_pP)]; # strain
> hardening ratio of spring
> set b [expr ($a_mem)/(1.0+$n*(1.0-$a_mem))];
> # set b [expr $My*($McMy-1.0) / ($Ks*$th_pP)];
>
> proc rotSpring2DModIKPeakOrientedModel {eleID nodeR nodeC K asPos asNeg
> MyPos MyNeg LS LK LA LD cS cK cA cD th_pP th_pN th_pcP th_pcN ResP ResN
> th_uP th_uN DP DN} {
> #
> # Create the zero length element
> uniaxialMaterial ModIMKPeakOriented $eleID $K $asPos $asNeg $MyPos
> $MyNeg $LS $LK $LA $LD $cS $cK $cA $cD $th_pP $th_pN $th_pcP $th_pcN $ResP
> $ResN $th_uP $th_uN $DP $DN;
>
> element zeroLength $eleID $nodeR $nodeC -mat $eleID -dir 6
>
> # Constrain the translational DOF with a multi-point constraint
> # retained constrained DOF_1 DOF_2 ... DOF_n
> equalDOF $nodeR $nodeC 1 2
> }
>
> #define plastic hinge
> rotSpring2DModIKPeakOrientedModel 1 1 2 $Ks $b $b $My [expr -1.0*$My] $LS
> $LK $LA $LD $cS $cK $cA $cD $th_pP $th_pN $th_pcP $th_pcN $ResP $ResN
> $th_uP $th_uN $DP $DN;
>
> #define lead load
> set P -157000.0;
> pattern Plain 1 Constant {
> load 3 0.0 $P 0.0
> }
>
> #gravity analysis
> constraints Plain;
> numberer Plain;
> system BandGeneral;
> #test NormDispIncr 1.0e-8 500 1;
> test RelativeNormDispIncr 1.0e-8 500 1;
> algorithm Newton;
> integrator LoadControl 0;
> analysis Static;
> analyze 1;
> puts "***gravity analysis finished"
>
> #define recorder
> recorder Node -file $dir/$NO-disp_2.out -time -node 3 -dof 1 disp;
> loadConst -time 0.0;
>
> #cyclic load analysis
> set dispNode 3;
> set dU 0.5e-3;
> pattern Plain 2 Linear {
> load $dispNode 1.0 0.0 0.0
> }
>
> #run cyclic load analysis
> for {set ii 1} {$ii <=3} {incr ii} {
> integrator DisplacementControl $dispNode 1 $dU;
> analyze [expr 3*$ii*12];
> integrator DisplacementControl $dispNode 1 -$dU;
> analyze [expr 6*$ii*12];
> integrator DisplacementControl $dispNode 1 $dU;
> analyze [expr 3*$ii*12];
> }
>
> puts "***cyclic load analysis finished"

Hello,

Did you figure this out? I tried to increase the tolerance but it still doesn't work. I am really frustrated.
Image
brag006
Posts: 173
Joined: Wed Feb 15, 2012 1:26 pm
Location: University of Auckland

Re: Problem with RelativeNormDispIncr test command

Post by brag006 »

Can you post your code
brag006
Posts: 173
Joined: Wed Feb 15, 2012 1:26 pm
Location: University of Auckland

Re: Problem with RelativeNormDispIncr test command

Post by brag006 »

Regarding the original post the problem has to do with the size of the time step. It does mention in the wiki page (http://opensees.berkeley.edu/wiki/index ... ement_Test) that if the initial timestep is very small you will have convergence problems. I increased the step to 0.05 and it worked. Obviously one has to change the number of steps to ensure you are still displacing the model the same displacement.
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Re: Problem with RelativeNormDispIncr test command

Post by fmk »

the problem has to do with the value that is being used to compare against, the norm at the first trial step. if this is very small to begin with, convergence may never occur using a relative norm as the criteria because it would require the computer to store numbers and compute expressions to precisions far greater than they can using double precision arithmetic and the IEEE 754 standard.
Post Reply