Nonlinear Spring Element

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

Moderators: silvia, selimgunay, Moderators

Post Reply
sedatacem
Posts: 17
Joined: Tue Dec 10, 2019 10:18 am

Nonlinear Spring Element

Post by sedatacem » Sun Aug 02, 2020 6:48 am

Dear All,

I have a simple columns using Fiber section and dispbeamcolumn, and elastic beams with zero length elements of rotational stiffness. I run transient analysis. The problem is despite changing Moment Rotation properties of rotation spring, the lateral displacement does not change at all...It only changes when I change Youngs Modulus of Beams to same as Moment Rotation values of rotation spring.

double ECI = (_s1p / (_e1p));
double I =sec.Iy;
double Ec = ECI / I;

However, normally I should use Elastic Modulus which is calculated or given in table for a concrete strength.
İs this a Bug or Am I doing something wrong?

// My Computer generated TCL Code
wipe
model BasicBuilder -ndm 3 -ndf 6
node 0 0 0 0 -mass 0 0 0.0 0.0 0.0 0.0
node 1 0 0 5 -mass 5260.93 5260.93 0.0 0.0 0.0 0.0
node 2 8 0 0 -mass 0 0 0.0 0.0 0.0 0.0
node 3 8 0 5 -mass 5260.93 5260.93 0.0 0.0 0.0 0.0
node 4 0 8 0 -mass 0 0 0.0 0.0 0.0 0.0
node 5 0 8 5 -mass 5260.93 5260.93 0.0 0.0 0.0 0.0
node 6 8 8 0 -mass 0 0 0.0 0.0 0.0 0.0
node 7 8 8 5 -mass 5260.93 5260.93 0.0 0.0 0.0 0.0
fix 0 1 1 1 1 1 1
fix 2 1 1 1 1 1 1
fix 4 1 1 1 1 1 1
fix 6 1 1 1 1 1 1
uniaxialMaterial ReinforcingSteel 1000001000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000002000 -30000000 -0.002 5337517737.63645 1250000 0.000468382518407713 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000003000 -37193970.212833 -0.00439799007094432 5337517737.63645 1250000 0.000468382518407713 2 30 1.44677469461976
section Fiber 100000 -GJ 12720393247.5672 {
patch rect 1000003000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000002000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000002000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000002000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000002000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000001000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000001000
fiber 0.075 0.2325 0.000178571428571429 1000001000
fiber -0.05 -0.2325 0.000178571428571429 1000001000
fiber -0.05 0.2325 0.000178571428571429 1000001000
fiber -0.175 -0.2325 0.000178571428571429 1000001000
fiber -0.175 0.2325 0.000178571428571429 1000001000
layer straight 1000001000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 1 -1 0 0
uniaxialMaterial Elastic 133333 16000000000
section Aggregator 144444 133333 T -section 100000
element dispBeamColumn 1 0 1 5 144444 1
uniaxialMaterial ReinforcingSteel 1000011000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000012000 -30000000 -0.002 5337517737.63645 1250000 0.000468382518407713 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000013000 -37193970.212833 -0.00439799007094432 5337517737.63645 1250000 0.000468382518407713 2 30 1.44677469461976
section Fiber 100001 -GJ 12720393247.5672 {
patch rect 1000013000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000012000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000012000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000012000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000012000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000011000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000011000
fiber 0.075 0.2325 0.000178571428571429 1000011000
fiber -0.05 -0.2325 0.000178571428571429 1000011000
fiber -0.05 0.2325 0.000178571428571429 1000011000
fiber -0.175 -0.2325 0.000178571428571429 1000011000
fiber -0.175 0.2325 0.000178571428571429 1000011000
layer straight 1000011000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 2 -1 0 0
uniaxialMaterial Elastic 133334 16000000000
section Aggregator 144445 133334 T -section 100001
element dispBeamColumn 2 2 3 5 144445 2
uniaxialMaterial ReinforcingSteel 1000021000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000022000 -30000000 -0.002 5337517737.63645 1250000 0.000468382518407713 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000023000 -37193970.212833 -0.00439799007094432 5337517737.63645 1250000 0.000468382518407713 2 30 1.44677469461976
section Fiber 100002 -GJ 12720393247.5672 {
patch rect 1000023000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000022000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000022000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000022000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000022000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000021000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000021000
fiber 0.075 0.2325 0.000178571428571429 1000021000
fiber -0.05 -0.2325 0.000178571428571429 1000021000
fiber -0.05 0.2325 0.000178571428571429 1000021000
fiber -0.175 -0.2325 0.000178571428571429 1000021000
fiber -0.175 0.2325 0.000178571428571429 1000021000
layer straight 1000021000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 3 -1 0 0
uniaxialMaterial Elastic 133335 16000000000
section Aggregator 144446 133335 T -section 100002
element dispBeamColumn 3 4 5 5 144446 3
uniaxialMaterial ReinforcingSteel 1000031000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000032000 -30000000 -0.002 5337517737.63645 1250000 0.000468382518407713 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000033000 -37193970.212833 -0.00439799007094432 5337517737.63645 1250000 0.000468382518407713 2 30 1.44677469461976
section Fiber 100003 -GJ 12720393247.5672 {
patch rect 1000033000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000032000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000032000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000032000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000032000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000031000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000031000
fiber 0.075 0.2325 0.000178571428571429 1000031000
fiber -0.05 -0.2325 0.000178571428571429 1000031000
fiber -0.05 0.2325 0.000178571428571429 1000031000
fiber -0.175 -0.2325 0.000178571428571429 1000031000
fiber -0.175 0.2325 0.000178571428571429 1000031000
layer straight 1000031000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 4 -1 0 0
uniaxialMaterial Elastic 133336 16000000000
section Aggregator 144447 133336 T -section 100003
element dispBeamColumn 4 6 7 5 144447 4
node 300000 0 0 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300001 8 0 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 5 0 0 1
element elasticBeamColumn 5 300000 300001 0.21 31800983118.9179 12720393247.5672 12720393247.5672 0.00300125 0.00055125 5
uniaxialMaterial Hysteretic 100004 282000 0.0001 500000 0.002 -282000 -0.0001 -500000 -0.002 0.0 0.0 0.0 0.0
element zeroLength 100004 1 300000 -mat 100004 -dir 6

uniaxialMaterial Hysteretic 100005 282000 0.0001 500000 0.002 -282000 -0.0001 -500000 -0.002 0.0 0.0 0.0 0.0
element zeroLength 100005 300001 3 -mat 100005 -dir 6

equalDOF 1 300000 1 2 3 4 5 6
equalDOF 3 300001 1 2 3 4 5 6
node 300002 0 8 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300003 8 8 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 6 0 0 1
element elasticBeamColumn 6 300002 300003 0.21 31800983118.9179 12720393247.5672 12720393247.5672 0.00300125 0.00055125 6
uniaxialMaterial Hysteretic 100006 282000 0.0001 500000 0.002 -282000 -0.0001 -500000 -0.002 0.0 0.0 0.0 0.0
element zeroLength 100006 5 300002 -mat 100006 -dir 6

uniaxialMaterial Hysteretic 100007 282000 0.0001 500000 0.002 -282000 -0.0001 -500000 -0.002 0.0 0.0 0.0 0.0
element zeroLength 100007 300003 7 -mat 100007 -dir 6

equalDOF 5 300002 1 2 3 4 5 6
equalDOF 7 300003 1 2 3 4 5 6
node 300004 0 0 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300005 0 8 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 7 0 0 1
element elasticBeamColumn 7 300004 300005 0.21 31800983118.9179 12720393247.5672 12720393247.5672 0.00300125 0.00055125 7
uniaxialMaterial Hysteretic 100008 282000 0.0001 500000 0.002 -282000 -0.0001 -500000 -0.002 0.0 0.0 0.0 0.0
element zeroLength 100008 1 300004 -mat 100008 -dir 6

uniaxialMaterial Hysteretic 100009 282000 0.0001 500000 0.002 -282000 -0.0001 -500000 -0.002 0.0 0.0 0.0 0.0
element zeroLength 100009 300005 5 -mat 100009 -dir 6

equalDOF 1 300004 1 2 3 4 5 6
equalDOF 5 300005 1 2 3 4 5 6
node 300006 8 0 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300007 8 8 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 8 0 0 1
element elasticBeamColumn 8 300006 300007 0.21 31800983118.9179 12720393247.5672 12720393247.5672 0.00300125 0.00055125 8
uniaxialMaterial Hysteretic 100010 282000 0.0001 500000 0.002 -282000 -0.0001 -500000 -0.002 0.0 0.0 0.0 0.0
element zeroLength 100010 3 300006 -mat 100010 -dir 6

uniaxialMaterial Hysteretic 100011 282000 0.0001 500000 0.002 -282000 -0.0001 -500000 -0.002 0.0 0.0 0.0 0.0
element zeroLength 100011 300007 7 -mat 100011 -dir 6

equalDOF 3 300006 1 2 3 4 5 6
equalDOF 7 300007 1 2 3 4 5 6
pattern Plain 1 "Linear" {
load 1 0 0 -51609.75617 0 0 0
load 3 0 0 -51609.75617 0 0 0
load 5 0 0 -51609.75617 0 0 0
load 7 0 0 -51609.75617 0 0 0
}
test NormDispIncr 0.9 6 0
system ProfileSPD
numberer RCM
constraints Plain
integrator LoadControl 0.1
algorithm Newton
analysis Static
analyze 10
loadConst -time 0.0
recorder Node -precision 10 -xml "nodesOutX.txt" -dof 1 2 3 4 5 6 disp
timeSeries Path 2 -dt 0.02 -filePath ivmeopensees.txt -factor 7.5537;
pattern UniformExcitation 2 1 -accel 2;
pattern UniformExcitation 3 2 -accel 2;
set xDamp 0.05;
set MpropSwitch 1.0;
set KcurrSwitch 0.0;
set KcommSwitch 1.0;
set KinitSwitch 0.0;
set nEigenI 1;
set nEigenJ 3;
set lambdaN [eigen [expr $nEigenJ]];
set lambdaI [lindex $lambdaN [expr $nEigenI-1]];
set lambdaJ [lindex $lambdaN [expr $nEigenJ-1]];
set omegaI [expr pow($lambdaI,0.5)];
set omegaJ [expr pow($lambdaJ,0.5)];
set alphaM [expr $MpropSwitch*$xDamp*(2*$omegaI*$omegaJ)/($omegaI+$omegaJ)];
set betaKcurr [expr $KcurrSwitch*2.*$xDamp/($omegaI+$omegaJ)];
set betaKcomm [expr $KcommSwitch*2.*$xDamp/($omegaI+$omegaJ)];
set betaKinit [expr $KinitSwitch*2.*$xDamp/($omegaI+$omegaJ)];
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm;
source SmartAnalyze.tcl
wipeAnalysis;
constraints Plain;
numberer Plain;
system BandGeneral;
algorithm Newton;
integrator Newmark 0.5 0.25;
analysis Transient;
SmartAnalyzeTransient 0.02 3000 ;
wipe;

selimgunay
Posts: 913
Joined: Mon Sep 09, 2013 8:50 pm
Location: University of California, Berkeley

Re: Nonlinear Spring Element

Post by selimgunay » Mon Aug 03, 2020 3:42 pm

Please make sure that you are not constraining the two nodes of your zeroelength elements in rotation or you are not fixing them.

sedatacem
Posts: 17
Joined: Tue Dec 10, 2019 10:18 am

Re: Nonlinear Spring Element

Post by sedatacem » Mon Aug 03, 2020 11:39 pm

No, they are not constrained in rotation. All is OK with them.

Lets say I have a beam and I model it as uniaxial Hysteretic and zerolength element as nonlinear rotation spring + elastic Element with E + uniaxial Hysteretic and zerolength element as nonlinear rotation spring. The columns I model as fiber section. There is no problem with columns. I run transient analysis and check maximum displacement. This maximum displacement does not change as I change parameters of nonlinear rotation spring, ie. Moment Rotation properties. However this displacement changes as I change Elastic modulus of elastic material between nonlinear rotation springs. I found a middle solution to change Elastic modulus to make same nonlinear rotation springs properties thru Mp/ep = K = M/EI so from this equation I can find E of spring and assign it to Elastic member. I also asked this question to Professor Michael H Scott and Professor Frank McKenna as I think this problem must be clarified or solved.

This is important as we use it post tensioned beam column connection in our projects..We check rotations of such connections using Nonlinear Time History Analysis.

Thanks a lot.

selimgunay
Posts: 913
Joined: Mon Sep 09, 2013 8:50 pm
Location: University of California, Berkeley

Re: Nonlinear Spring Element

Post by selimgunay » Tue Aug 04, 2020 7:47 pm

Displacements should change with the nonlinear rotation spring parameters. Two followup questions:

1. Does the time history change, is it only the maximum displacement that does not change?
2. Do the nonlinear rotation springs yield? If you are only changing the force capacities and they don't yield, the displacements would not change

sedatacem
Posts: 17
Joined: Tue Dec 10, 2019 10:18 am

Re: Nonlinear Spring Element

Post by sedatacem » Thu Aug 06, 2020 10:51 am

I run with several Hinge Moment and Rotations, however,

1. Time history did NOT change as well as maximum displacements.
2. In first run they did not yield, and in second run they yielded. However, still time history and maximum displacements did NOT change.
3. They only change happen when I change Elastic Modulus of Elastic material between nonlinear springs.

//This is my script. You can also try by just changing hysteretic properties and see that not displacements nor time history changes. Only When you change Elastic modulus of Elastic material, then everything changes. You need SmartAnalyze.tcl which is at end of this message.


///////////////////SOURCE CODE ////////////////////////////////////////////
wipe
model BasicBuilder -ndm 3 -ndf 6
node 0 0 0 0 -mass 0 0 0.0 0.0 0.0 0.0
node 1 0 0 5 -mass 7643 7643 0.0 0.0 0.0 0.0
node 2 0 0 10 -mass 7643 7643 0.0 0.0 0.0 0.0
node 3 0 0 15 -mass 7643 7643 0.0 0.0 0.0 0.0
node 4 0 0 20 -mass 6050.71 6050.71 0.0 0.0 0.0 0.0
node 5 7 0 0 -mass 0 0 0.0 0.0 0.0 0.0
node 6 7 0 5 -mass 7643 7643 0.0 0.0 0.0 0.0
node 7 7 0 10 -mass 7643 7643 0.0 0.0 0.0 0.0
node 8 7 0 15 -mass 7643 7643 0.0 0.0 0.0 0.0
node 9 7 0 20 -mass 6050.71 6050.71 0.0 0.0 0.0 0.0
node 10 0 7 0 -mass 0 0 0.0 0.0 0.0 0.0
node 11 0 7 5 -mass 7643 7643 0.0 0.0 0.0 0.0
node 12 0 7 10 -mass 7643 7643 0.0 0.0 0.0 0.0
node 13 0 7 15 -mass 7643 7643 0.0 0.0 0.0 0.0
node 14 0 7 20 -mass 6050.71 6050.71 0.0 0.0 0.0 0.0
node 15 7 7 0 -mass 0 0 0.0 0.0 0.0 0.0
node 16 7 7 5 -mass 7643 7643 0.0 0.0 0.0 0.0
node 17 7 7 10 -mass 7643 7643 0.0 0.0 0.0 0.0
node 18 7 7 15 -mass 7643 7643 0.0 0.0 0.0 0.0
node 19 7 7 20 -mass 6050.71 6050.71 0.0 0.0 0.0 0.0
fix 0 1 1 1 1 1 1
fix 5 1 1 1 1 1 1
fix 10 1 1 1 1 1 1
fix 15 1 1 1 1 1 1
uniaxialMaterial ReinforcingSteel 1000001000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000002000 -30000000 -0.002 5461614770.33198 1250000 0.000457740083313866 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000003000 -37193970.212833 -0.00439799007094432 5461614770.33198 1250000 0.000457740083313866 2 30 1.44677469461976
section Fiber 100000 -GJ 12720393247.5672 {
patch rect 1000003000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000002000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000002000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000002000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000002000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000001000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000001000
fiber 0.075 0.2325 0.000178571428571429 1000001000
fiber -0.05 -0.2325 0.000178571428571429 1000001000
fiber -0.05 0.2325 0.000178571428571429 1000001000
fiber -0.175 -0.2325 0.000178571428571429 1000001000
fiber -0.175 0.2325 0.000178571428571429 1000001000
layer straight 1000001000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 1 -1 0 0
uniaxialMaterial Elastic 133333 16000000000
section Aggregator 144444 133333 T -section 100000
element dispBeamColumn 1 0 1 5 144444 1
uniaxialMaterial ReinforcingSteel 1000011000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000012000 -30000000 -0.002 5461614770.33198 1250000 0.000457740083313866 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000013000 -37193970.212833 -0.00439799007094432 5461614770.33198 1250000 0.000457740083313866 2 30 1.44677469461976
section Fiber 100001 -GJ 12720393247.5672 {
patch rect 1000013000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000012000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000012000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000012000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000012000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000011000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000011000
fiber 0.075 0.2325 0.000178571428571429 1000011000
fiber -0.05 -0.2325 0.000178571428571429 1000011000
fiber -0.05 0.2325 0.000178571428571429 1000011000
fiber -0.175 -0.2325 0.000178571428571429 1000011000
fiber -0.175 0.2325 0.000178571428571429 1000011000
layer straight 1000011000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 2 -1 0 0
uniaxialMaterial Elastic 133334 16000000000
section Aggregator 144445 133334 T -section 100001
element dispBeamColumn 2 1 2 5 144445 2
uniaxialMaterial ReinforcingSteel 1000021000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000022000 -30000000 -0.002 5461614770.33198 1250000 0.000457740083313866 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000023000 -37193970.212833 -0.00439799007094432 5461614770.33198 1250000 0.000457740083313866 2 30 1.44677469461976
section Fiber 100002 -GJ 12720393247.5672 {
patch rect 1000023000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000022000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000022000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000022000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000022000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000021000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000021000
fiber 0.075 0.2325 0.000178571428571429 1000021000
fiber -0.05 -0.2325 0.000178571428571429 1000021000
fiber -0.05 0.2325 0.000178571428571429 1000021000
fiber -0.175 -0.2325 0.000178571428571429 1000021000
fiber -0.175 0.2325 0.000178571428571429 1000021000
layer straight 1000021000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 3 -1 0 0
uniaxialMaterial Elastic 133335 16000000000
section Aggregator 144446 133335 T -section 100002
element dispBeamColumn 3 2 3 5 144446 3
uniaxialMaterial ReinforcingSteel 1000031000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000032000 -30000000 -0.002 5399447931.83618 1250000 0.000463010298749159 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000033000 -37193970.212833 -0.00439799007094432 5399447931.83618 1250000 0.000463010298749159 2 30 1.44677469461976
section Fiber 100003 -GJ 12720393247.5672 {
patch rect 1000033000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000032000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000032000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000032000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000032000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000031000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000031000
fiber 0.075 0.2325 0.000178571428571429 1000031000
fiber -0.05 -0.2325 0.000178571428571429 1000031000
fiber -0.05 0.2325 0.000178571428571429 1000031000
fiber -0.175 -0.2325 0.000178571428571429 1000031000
fiber -0.175 0.2325 0.000178571428571429 1000031000
layer straight 1000031000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 4 -1 0 0
uniaxialMaterial Elastic 133336 16000000000
section Aggregator 144447 133336 T -section 100003
element dispBeamColumn 4 3 4 5 144447 4
uniaxialMaterial ReinforcingSteel 1000041000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000042000 -30000000 -0.002 5461614770.33198 1250000 0.000457740083313866 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000043000 -37193970.212833 -0.00439799007094432 5461614770.33198 1250000 0.000457740083313866 2 30 1.44677469461976
section Fiber 100004 -GJ 12720393247.5672 {
patch rect 1000043000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000042000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000042000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000042000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000042000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000041000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000041000
fiber 0.075 0.2325 0.000178571428571429 1000041000
fiber -0.05 -0.2325 0.000178571428571429 1000041000
fiber -0.05 0.2325 0.000178571428571429 1000041000
fiber -0.175 -0.2325 0.000178571428571429 1000041000
fiber -0.175 0.2325 0.000178571428571429 1000041000
layer straight 1000041000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 5 -1 0 0
uniaxialMaterial Elastic 133337 16000000000
section Aggregator 144448 133337 T -section 100004
element dispBeamColumn 5 5 6 5 144448 5
uniaxialMaterial ReinforcingSteel 1000051000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000052000 -30000000 -0.002 5461614770.33198 1250000 0.000457740083313866 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000053000 -37193970.212833 -0.00439799007094432 5461614770.33198 1250000 0.000457740083313866 2 30 1.44677469461976
section Fiber 100005 -GJ 12720393247.5672 {
patch rect 1000053000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000052000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000052000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000052000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000052000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000051000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000051000
fiber 0.075 0.2325 0.000178571428571429 1000051000
fiber -0.05 -0.2325 0.000178571428571429 1000051000
fiber -0.05 0.2325 0.000178571428571429 1000051000
fiber -0.175 -0.2325 0.000178571428571429 1000051000
fiber -0.175 0.2325 0.000178571428571429 1000051000
layer straight 1000051000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 6 -1 0 0
uniaxialMaterial Elastic 133338 16000000000
section Aggregator 144449 133338 T -section 100005
element dispBeamColumn 6 6 7 5 144449 6
uniaxialMaterial ReinforcingSteel 1000061000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000062000 -30000000 -0.002 5461614770.33198 1250000 0.000457740083313866 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000063000 -37193970.212833 -0.00439799007094432 5461614770.33198 1250000 0.000457740083313866 2 30 1.44677469461976
section Fiber 100006 -GJ 12720393247.5672 {
patch rect 1000063000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000062000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000062000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000062000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000062000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000061000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000061000
fiber 0.075 0.2325 0.000178571428571429 1000061000
fiber -0.05 -0.2325 0.000178571428571429 1000061000
fiber -0.05 0.2325 0.000178571428571429 1000061000
fiber -0.175 -0.2325 0.000178571428571429 1000061000
fiber -0.175 0.2325 0.000178571428571429 1000061000
layer straight 1000061000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 7 -1 0 0
uniaxialMaterial Elastic 133339 16000000000
section Aggregator 144450 133339 T -section 100006
element dispBeamColumn 7 7 8 5 144450 7
uniaxialMaterial ReinforcingSteel 1000071000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000072000 -30000000 -0.002 5399447931.83618 1250000 0.000463010298749159 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000073000 -37193970.212833 -0.00439799007094432 5399447931.83618 1250000 0.000463010298749159 2 30 1.44677469461976
section Fiber 100007 -GJ 12720393247.5672 {
patch rect 1000073000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000072000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000072000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000072000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000072000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000071000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000071000
fiber 0.075 0.2325 0.000178571428571429 1000071000
fiber -0.05 -0.2325 0.000178571428571429 1000071000
fiber -0.05 0.2325 0.000178571428571429 1000071000
fiber -0.175 -0.2325 0.000178571428571429 1000071000
fiber -0.175 0.2325 0.000178571428571429 1000071000
layer straight 1000071000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 8 -1 0 0
uniaxialMaterial Elastic 133340 16000000000
section Aggregator 144451 133340 T -section 100007
element dispBeamColumn 8 8 9 5 144451 8
uniaxialMaterial ReinforcingSteel 1000081000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000082000 -30000000 -0.002 5461614770.33198 1250000 0.000457740083313866 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000083000 -37193970.212833 -0.00439799007094432 5461614770.33198 1250000 0.000457740083313866 2 30 1.44677469461976
section Fiber 100008 -GJ 12720393247.5672 {
patch rect 1000083000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000082000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000082000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000082000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000082000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000081000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000081000
fiber 0.075 0.2325 0.000178571428571429 1000081000
fiber -0.05 -0.2325 0.000178571428571429 1000081000
fiber -0.05 0.2325 0.000178571428571429 1000081000
fiber -0.175 -0.2325 0.000178571428571429 1000081000
fiber -0.175 0.2325 0.000178571428571429 1000081000
layer straight 1000081000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 9 -1 0 0
uniaxialMaterial Elastic 133341 16000000000
section Aggregator 144452 133341 T -section 100008
element dispBeamColumn 9 10 11 5 144452 9
uniaxialMaterial ReinforcingSteel 1000091000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000092000 -30000000 -0.002 5461614770.33198 1250000 0.000457740083313866 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000093000 -37193970.212833 -0.00439799007094432 5461614770.33198 1250000 0.000457740083313866 2 30 1.44677469461976
section Fiber 100009 -GJ 12720393247.5672 {
patch rect 1000093000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000092000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000092000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000092000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000092000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000091000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000091000
fiber 0.075 0.2325 0.000178571428571429 1000091000
fiber -0.05 -0.2325 0.000178571428571429 1000091000
fiber -0.05 0.2325 0.000178571428571429 1000091000
fiber -0.175 -0.2325 0.000178571428571429 1000091000
fiber -0.175 0.2325 0.000178571428571429 1000091000
layer straight 1000091000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 10 -1 0 0
uniaxialMaterial Elastic 133342 16000000000
section Aggregator 144453 133342 T -section 100009
element dispBeamColumn 10 11 12 5 144453 10
uniaxialMaterial ReinforcingSteel 1000101000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000102000 -30000000 -0.002 5461614770.33198 1250000 0.000457740083313866 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000103000 -37193970.212833 -0.00439799007094432 5461614770.33198 1250000 0.000457740083313866 2 30 1.44677469461976
section Fiber 100010 -GJ 12720393247.5672 {
patch rect 1000103000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000102000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000102000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000102000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000102000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000101000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000101000
fiber 0.075 0.2325 0.000178571428571429 1000101000
fiber -0.05 -0.2325 0.000178571428571429 1000101000
fiber -0.05 0.2325 0.000178571428571429 1000101000
fiber -0.175 -0.2325 0.000178571428571429 1000101000
fiber -0.175 0.2325 0.000178571428571429 1000101000
layer straight 1000101000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 11 -1 0 0
uniaxialMaterial Elastic 133343 16000000000
section Aggregator 144454 133343 T -section 100010
element dispBeamColumn 11 12 13 5 144454 11
uniaxialMaterial ReinforcingSteel 1000111000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000112000 -30000000 -0.002 5399447931.83618 1250000 0.000463010298749159 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000113000 -37193970.212833 -0.00439799007094432 5399447931.83618 1250000 0.000463010298749159 2 30 1.44677469461976
section Fiber 100011 -GJ 12720393247.5672 {
patch rect 1000113000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000112000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000112000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000112000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000112000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000111000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000111000
fiber 0.075 0.2325 0.000178571428571429 1000111000
fiber -0.05 -0.2325 0.000178571428571429 1000111000
fiber -0.05 0.2325 0.000178571428571429 1000111000
fiber -0.175 -0.2325 0.000178571428571429 1000111000
fiber -0.175 0.2325 0.000178571428571429 1000111000
layer straight 1000111000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 12 -1 0 0
uniaxialMaterial Elastic 133344 16000000000
section Aggregator 144455 133344 T -section 100011
element dispBeamColumn 12 13 14 5 144455 12
uniaxialMaterial ReinforcingSteel 1000121000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000122000 -30000000 -0.002 5461614770.33198 1250000 0.000457740083313866 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000123000 -37193970.212833 -0.00439799007094432 5461614770.33198 1250000 0.000457740083313866 2 30 1.44677469461976
section Fiber 100012 -GJ 12720393247.5672 {
patch rect 1000123000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000122000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000122000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000122000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000122000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000121000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000121000
fiber 0.075 0.2325 0.000178571428571429 1000121000
fiber -0.05 -0.2325 0.000178571428571429 1000121000
fiber -0.05 0.2325 0.000178571428571429 1000121000
fiber -0.175 -0.2325 0.000178571428571429 1000121000
fiber -0.175 0.2325 0.000178571428571429 1000121000
layer straight 1000121000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 13 -1 0 0
uniaxialMaterial Elastic 133345 16000000000
section Aggregator 144456 133345 T -section 100012
element dispBeamColumn 13 15 16 5 144456 13
uniaxialMaterial ReinforcingSteel 1000131000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000132000 -30000000 -0.002 5461614770.33198 1250000 0.000457740083313866 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000133000 -37193970.212833 -0.00439799007094432 5461614770.33198 1250000 0.000457740083313866 2 30 1.44677469461976
section Fiber 100013 -GJ 12720393247.5672 {
patch rect 1000133000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000132000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000132000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000132000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000132000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000131000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000131000
fiber 0.075 0.2325 0.000178571428571429 1000131000
fiber -0.05 -0.2325 0.000178571428571429 1000131000
fiber -0.05 0.2325 0.000178571428571429 1000131000
fiber -0.175 -0.2325 0.000178571428571429 1000131000
fiber -0.175 0.2325 0.000178571428571429 1000131000
layer straight 1000131000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 14 -1 0 0
uniaxialMaterial Elastic 133346 16000000000
section Aggregator 144457 133346 T -section 100013
element dispBeamColumn 14 16 17 5 144457 14
uniaxialMaterial ReinforcingSteel 1000141000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000142000 -30000000 -0.002 5461614770.33198 1250000 0.000457740083313866 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000143000 -37193970.212833 -0.00439799007094432 5461614770.33198 1250000 0.000457740083313866 2 30 1.44677469461976
section Fiber 100014 -GJ 12720393247.5672 {
patch rect 1000143000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000142000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000142000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000142000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000142000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000141000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000141000
fiber 0.075 0.2325 0.000178571428571429 1000141000
fiber -0.05 -0.2325 0.000178571428571429 1000141000
fiber -0.05 0.2325 0.000178571428571429 1000141000
fiber -0.175 -0.2325 0.000178571428571429 1000141000
fiber -0.175 0.2325 0.000178571428571429 1000141000
layer straight 1000141000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 15 -1 0 0
uniaxialMaterial Elastic 133347 16000000000
section Aggregator 144458 133347 T -section 100014
element dispBeamColumn 15 17 18 5 144458 15
uniaxialMaterial ReinforcingSteel 1000151000 420000000 504000000 200000000000 1078305519.8973 0.008 0.08
uniaxialMaterial Concrete07 1000152000 -30000000 -0.002 5399447931.83618 1250000 0.000463010298749159 2 2.3 3.86923076923077
uniaxialMaterial Concrete07 1000153000 -37193970.212833 -0.00439799007094432 5399447931.83618 1250000 0.000463010298749159 2 30 1.44677469461976
section Fiber 100015 -GJ 12720393247.5672 {
patch rect 1000153000 10 1 -0.2325 -0.2325 0.2325 0.2325
patch rect 1000152000 2 1 -0.25 -0.25 0.25 -0.2325
patch rect 1000152000 2 1 -0.25 0.2325 0.25 0.25
patch rect 1000152000 10 1 0.2325 -0.2325 0.25 0.2325
patch rect 1000152000 10 1 -0.25 -0.2325 -0.2325 0.2325
layer straight 1000151000 2 0.000314159265358979 0.2325 -0.2325 0.2325 0.2325
fiber 0.075 -0.2325 0.000178571428571429 1000151000
fiber 0.075 0.2325 0.000178571428571429 1000151000
fiber -0.05 -0.2325 0.000178571428571429 1000151000
fiber -0.05 0.2325 0.000178571428571429 1000151000
fiber -0.175 -0.2325 0.000178571428571429 1000151000
fiber -0.175 0.2325 0.000178571428571429 1000151000
layer straight 1000151000 2 0.000314159265358979 -0.2325 -0.2325 -0.2325 0.2325
}

geomTransf Linear 16 -1 0 0
uniaxialMaterial Elastic 133348 16000000000
section Aggregator 144459 133348 T -section 100015
element dispBeamColumn 16 18 19 5 144459 16
node 300000 0 0 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300001 7 0 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 17 0 0 1
element elasticBeamColumn 17 300000 300001 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 17
uniaxialMaterial Hysteretic 100016 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100016 1 300000 -mat 100016 -dir 6

uniaxialMaterial Hysteretic 100017 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100017 300001 6 -mat 100017 -dir 6

equalDOF 1 300000 1 2 3 4 5 6
equalDOF 6 300001 1 2 3 4 5 6
node 300002 0 7 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300003 7 7 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 18 0 0 1
element elasticBeamColumn 18 300002 300003 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 18
uniaxialMaterial Hysteretic 100018 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100018 11 300002 -mat 100018 -dir 6

uniaxialMaterial Hysteretic 100019 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100019 300003 16 -mat 100019 -dir 6

equalDOF 11 300002 1 2 3 4 5 6
equalDOF 16 300003 1 2 3 4 5 6
node 300004 0 0 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300005 0 7 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 19 0 0 1
element elasticBeamColumn 19 300004 300005 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 19
uniaxialMaterial Hysteretic 100020 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100020 1 300004 -mat 100020 -dir 6

uniaxialMaterial Hysteretic 100021 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100021 300005 11 -mat 100021 -dir 6

equalDOF 1 300004 1 2 3 4 5 6
equalDOF 11 300005 1 2 3 4 5 6
node 300006 7 0 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300007 7 7 5 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 20 0 0 1
element elasticBeamColumn 20 300006 300007 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 20
uniaxialMaterial Hysteretic 100022 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100022 6 300006 -mat 100022 -dir 6

uniaxialMaterial Hysteretic 100023 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100023 300007 16 -mat 100023 -dir 6

equalDOF 6 300006 1 2 3 4 5 6
equalDOF 16 300007 1 2 3 4 5 6
node 300008 0 0 10 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300009 7 0 10 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 21 0 0 1
element elasticBeamColumn 21 300008 300009 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 21
uniaxialMaterial Hysteretic 100024 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100024 2 300008 -mat 100024 -dir 6

uniaxialMaterial Hysteretic 100025 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100025 300009 7 -mat 100025 -dir 6

equalDOF 2 300008 1 2 3 4 5 6
equalDOF 7 300009 1 2 3 4 5 6
node 300010 0 7 10 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300011 7 7 10 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 22 0 0 1
element elasticBeamColumn 22 300010 300011 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 22
uniaxialMaterial Hysteretic 100026 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100026 12 300010 -mat 100026 -dir 6

uniaxialMaterial Hysteretic 100027 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100027 300011 17 -mat 100027 -dir 6

equalDOF 12 300010 1 2 3 4 5 6
equalDOF 17 300011 1 2 3 4 5 6
node 300012 0 0 10 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300013 0 7 10 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 23 0 0 1
element elasticBeamColumn 23 300012 300013 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 23
uniaxialMaterial Hysteretic 100028 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100028 2 300012 -mat 100028 -dir 6

uniaxialMaterial Hysteretic 100029 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100029 300013 12 -mat 100029 -dir 6

equalDOF 2 300012 1 2 3 4 5 6
equalDOF 12 300013 1 2 3 4 5 6
node 300014 7 0 10 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300015 7 7 10 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 24 0 0 1
element elasticBeamColumn 24 300014 300015 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 24
uniaxialMaterial Hysteretic 100030 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100030 7 300014 -mat 100030 -dir 6

uniaxialMaterial Hysteretic 100031 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100031 300015 17 -mat 100031 -dir 6

equalDOF 7 300014 1 2 3 4 5 6
equalDOF 17 300015 1 2 3 4 5 6
node 300016 0 0 15 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300017 7 0 15 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 25 0 0 1
element elasticBeamColumn 25 300016 300017 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 25
uniaxialMaterial Hysteretic 100032 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100032 3 300016 -mat 100032 -dir 6

uniaxialMaterial Hysteretic 100033 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100033 300017 8 -mat 100033 -dir 6

equalDOF 3 300016 1 2 3 4 5 6
equalDOF 8 300017 1 2 3 4 5 6
node 300018 0 7 15 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300019 7 7 15 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 26 0 0 1
element elasticBeamColumn 26 300018 300019 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 26
uniaxialMaterial Hysteretic 100034 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100034 13 300018 -mat 100034 -dir 6

uniaxialMaterial Hysteretic 100035 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100035 300019 18 -mat 100035 -dir 6

equalDOF 13 300018 1 2 3 4 5 6
equalDOF 18 300019 1 2 3 4 5 6
node 300020 0 0 15 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300021 0 7 15 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 27 0 0 1
element elasticBeamColumn 27 300020 300021 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 27
uniaxialMaterial Hysteretic 100036 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100036 3 300020 -mat 100036 -dir 6

uniaxialMaterial Hysteretic 100037 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100037 300021 13 -mat 100037 -dir 6

equalDOF 3 300020 1 2 3 4 5 6
equalDOF 13 300021 1 2 3 4 5 6
node 300022 7 0 15 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300023 7 7 15 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 28 0 0 1
element elasticBeamColumn 28 300022 300023 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 28
uniaxialMaterial Hysteretic 100038 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100038 8 300022 -mat 100038 -dir 6

uniaxialMaterial Hysteretic 100039 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100039 300023 18 -mat 100039 -dir 6

equalDOF 8 300022 1 2 3 4 5 6
equalDOF 18 300023 1 2 3 4 5 6
node 300024 0 0 20 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300025 7 0 20 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 29 0 0 1
element elasticBeamColumn 29 300024 300025 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 29
uniaxialMaterial Hysteretic 100040 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100040 4 300024 -mat 100040 -dir 6

uniaxialMaterial Hysteretic 100041 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100041 300025 9 -mat 100041 -dir 6

equalDOF 4 300024 1 2 3 4 5 6
equalDOF 9 300025 1 2 3 4 5 6
node 300026 0 7 20 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300027 7 7 20 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 30 0 0 1
element elasticBeamColumn 30 300026 300027 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 30
uniaxialMaterial Hysteretic 100042 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100042 14 300026 -mat 100042 -dir 6

uniaxialMaterial Hysteretic 100043 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100043 300027 19 -mat 100043 -dir 6

equalDOF 14 300026 1 2 3 4 5 6
equalDOF 19 300027 1 2 3 4 5 6
node 300028 0 0 20 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300029 0 7 20 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 31 0 0 1
element elasticBeamColumn 31 300028 300029 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 31
uniaxialMaterial Hysteretic 100044 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100044 4 300028 -mat 100044 -dir 6

uniaxialMaterial Hysteretic 100045 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100045 300029 14 -mat 100045 -dir 6

equalDOF 4 300028 1 2 3 4 5 6
equalDOF 14 300029 1 2 3 4 5 6
node 300030 7 0 20 -mass 0.0 0.0 0.0 0.0 0.0 0.0
node 300031 7 7 20 -mass 0.0 0.0 0.0 0.0 0.0 0.0
geomTransf PDelta 32 0 0 1
element elasticBeamColumn 32 300030 300031 0.3 31800983118.9179 12720393247.5672 12720393247.5672 0.00315 0.0021875 32
uniaxialMaterial Hysteretic 100046 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100046 9 300030 -mat 100046 -dir 6

uniaxialMaterial Hysteretic 100047 176000 0.001 421000 0.00834 -176000 -0.001 -421000 -0.00834 0.0 0.0 0.0 0.0
element zeroLength 100047 300031 19 -mat 100047 -dir 6

equalDOF 9 300030 1 2 3 4 5 6
equalDOF 19 300031 1 2 3 4 5 6
pattern Plain 1 "Linear" {
load 1 0 0 -74977.854 0 0 0
load 2 0 0 -74977.854 0 0 0
load 3 0 0 -74977.854 0 0 0
load 4 0 0 -59357.46775 0 0 0
load 6 0 0 -74977.854 0 0 0
load 7 0 0 -74977.854 0 0 0
load 8 0 0 -74977.854 0 0 0
load 9 0 0 -59357.46775 0 0 0
load 11 0 0 -74977.854 0 0 0
load 12 0 0 -74977.854 0 0 0
load 13 0 0 -74977.854 0 0 0
load 14 0 0 -59357.46775 0 0 0
load 16 0 0 -74977.854 0 0 0
load 17 0 0 -74977.854 0 0 0
load 18 0 0 -74977.854 0 0 0
load 19 0 0 -59357.46775 0 0 0
}
test NormDispIncr 0.9 6 0
system ProfileSPD
numberer RCM
constraints Plain
integrator LoadControl 0.1
algorithm Newton
analysis Static
analyze 10
loadConst -time 0.0
recorder Node -precision 10 -xml "nodesOutX.txt" -dof 1 2 3 4 5 6 disp
timeSeries Path 2 -dt 0.02 -filePath ivmeopensees.txt -factor 9.81;
pattern UniformExcitation 2 1 -accel 2;
pattern UniformExcitation 3 2 -accel 2;
set xDamp 0.05;
set MpropSwitch 1.0;
set KcurrSwitch 0.0;
set KcommSwitch 1.0;
set KinitSwitch 0.0;
set nEigenI 1;
set nEigenJ 3;
set lambdaN [eigen [expr $nEigenJ]];
set lambdaI [lindex $lambdaN [expr $nEigenI-1]];
set lambdaJ [lindex $lambdaN [expr $nEigenJ-1]];
set omegaI [expr pow($lambdaI,0.5)];
set omegaJ [expr pow($lambdaJ,0.5)];
set alphaM [expr $MpropSwitch*$xDamp*(2*$omegaI*$omegaJ)/($omegaI+$omegaJ)];
set betaKcurr [expr $KcurrSwitch*2.*$xDamp/($omegaI+$omegaJ)];
set betaKcomm [expr $KcommSwitch*2.*$xDamp/($omegaI+$omegaJ)];
set betaKinit [expr $KinitSwitch*2.*$xDamp/($omegaI+$omegaJ)];
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm;
source SmartAnalyze.tcl
wipeAnalysis;
constraints Plain;
numberer Plain;
system BandGeneral;
algorithm Newton;
integrator Newmark 0.5 0.25;
analysis Transient;
SmartAnalyzeTransient 0.02 3000 ;
wipe;

/////////END OF SOURCE CODE

////////BEGINING OF SMARTANALYZE.TCL
#####
# File: SmartAnalyze.tcl
# Author: Hanlin Dong
# Create: 2019-06-28 10:42:19
# Version: 4.0.2 alpha
# Last update: 2020-06-11 19:58:00
# License: MIT License (https://opensource.org/licenses/MIT)
# (The latest version can be found on http://www.hanlindong.com/)
# Readme:
# Introduction
# ------------
# The SmartAnalyze provides OpenSees users a easier way to conduct analyses.
# There are two main functions defined in this .tcl file. SmartAnalyzeTransient & SmartAnalyzeStatic.
# SmartAnalyzeTransient is used to conduct time history analyses.
# The arguments must be specified are
# `dt`: delta t
# `npts`: number of points.
# SmartAnalyzeStatic is used to conduct static analyze.
# Users provide a loading protocol with displacement targets.
# Then SmartAnalyze will run DisplacementControl analyses accordingly.
# The arguments that must be specified are
# `node`: the node tag in the displacement control
# `dof`: the dof in the displacement control
# `maxStep`: the maximum step length in the displacement control
# `targets`: a list of target displacements.
# (E.g. {1 -1 1 -1 0} will result in cyclic load of disp amplitude 1 twice.)
# Note: the first element must be positive.
# If the control array is not specified, all the default values will be used.
# If you want to change the control parameters, pass it as an array delegate.
#
# Example
# -------
# Example 1: Basic usage for Transient
# source SmartAnalyze.tcl
# constraints Transformation
# numberer Plain
# system BandGeneral
# integrator Newmark 0.5 0.25
# SmartAnalyzeTransient $dt $npts
#
# Example 2: Basic usage for Static
# source SmartAnalyze.tcl
# constraints Transformation
# numberer Plain
# system BandGeneral
# set protocol {1 -1 1 -1 0}
# SmartAnalyzeStatic $node $dof $maxStep $protocol
#
# Example 3: change control parameters
# set control(printPer) 20
# set control(tryAlterAlgoTypes) True
# set control(algoTypes) {20 30}
# SmartAnalyzeTransient $dt $npts control
#
# Example 4: define user algorithm
# proc UserAlgorithm0 {
# algorithm KrylovNewton -increment initial -maxDim 10
# }
# set control(algoTypes) {80}
# SmartAnalyzeTransient $dt $npts control
#
# The work flow
# -------------
# 1. Start
# 2. Set initial step length, algorithm method and test (You don't need to specify them in your model.)
# 3. Divide the whole analysis into pieces. For Static, use maxStep. For Transient, use dt.
# 4. Loop by each piece and analyze recursively with RecursiveAnalyze, in the following way
# 4.1 Trail analyze for one step, if converge, continue loop 4.
# 4.2 If not converge, if tryAddTestTimes is True, if the last test norm is smaller than normTol, recursively set a larger test time.
# 4.3 If not converge, if tryAlterAlgoTypes is True, recursively loop to the next algo type.
# 4.4 If not converge, divide the current step into two steps. The first one equals to the current step times relaxation.
# 4.5 If either step is smaller than minStep:
# 4.5.1 If tryLooseTestTol is True, loose test tolerance to looseTestTolTo.
# 4.5.2 Else, return not converge code. Exit.
# 4.6 If both steps are not smaller than minStep, divide the current piece into two and re-run loop 4.
# 5. If converge, return success message.
#
# Control Parameters
# ------------------
# TEST RELATED:
# `testType` : string. Identical to the testType in OpenSees test command. Default is "EnergyIncr".
# Choices see http://opensees.berkeley.edu/wiki/index ... st_Command.
# `testTol` : float. The initial test tolerance set to the OpenSees test command. Default is 1.0e-6.
# If tryLooseTestTol is set to True, the test tolerance can be loosen.
# `testIterTimes` : integer. The initial number of test iteration times. Default is 7.
# If tryAddTestTimes is set to True, the number of test times can be enlarged.
# `testPrintFlag` : integer. The test print flag in OpenSees Test command. Default is 0.
# Choices see http://opensees.berkeley.edu/wiki/index ... st_Command.
# `tryAddTestTimes` : boolean. Default is True If this is set to True,
# the number of test times will be enlarged if the last test norm is smaller than `normTol`,
# the enlarged number is specified in `testIterTimesMore`.
# Otherwise, the number of test times will always be equal to `testIterTimes`.
# `normTol` : float. Only useful when tryAddTestTimes is True. Default is 1.0e3.
# If unconverge, the last norm of test will be compared to `normTol`.
# If the norm is smaller, the number of test times will be enlarged.
# `testIterTimesMore` : integer. Only useful when tryaddTestTimes is True. Default is 50.
# If unconverge and norm is ok, the test iteration times will be set to this number.
# `tryLooseTestTol` : boolean. If this is set to True, if unconverge at minimum step,
# the test tolerance will be loosen to the number specified by `looseTestTolTo`.
# the step will be set back.
# Default is True.
# `looseTestTolTo` : float. Only useful if tryLooseTestTol is True.
# If unconvergance at the min step, the test tolerance will be set to this value.
# Default is 1.
# ALGORITHM RELATED:
# `tryAlterAlgoTypes` : boolean. Default is False.
# If True, different algorithm types specified in `algoTypes` will be tried during unconvergance.
# If False, the first algorithm type specified in `algoTypes` will be used.
# `algoTypes` : list of integer. A list of flags of the algorithms to be used during unconvergance.
# The integer flag is documented in the following section.
# Only useful when tryAlterAlgoTypes is True.
# The first flag will be used by default.
# The algorithm command in the model will be ignored.
# Default is { 40 }
# If you need other algorithm, try a user-defined algorithm. See the following section.
# STEP RELATED:
# `initialStep` : float. Default is equal to $dt.
# Specifying the initial Step length to conduct analysis.
# `relaxation` : float, between 0 and 1. Default is 0.5.
# A factor that is multiplied by each time the step length is shortened.
# `minStep` : float. Default is 1.0e-6.
# The step tolerance when shortening the step length.
# If step length is smaller than minStep, special ways to converge the model will be used according to `try-` flags.
# LOGGING RELATED:
# `printPer` : integer. Print to the console every several trials. Default is 1.
# `debugMode` : boolean. Print as much information as possible.
# DEPRECATED:
# `tryForceConverge` : Using force converge will always give bad results.
# `reorderAlgoTypes` : The algorithm types should not be reorded.
# The script author should be responsible in providing the order.
#
# Algorithm type flag reference
# -----------------------------
# 0: Linear
# 1: Linear -initial
# 2: Linear -factorOnce
# 10: Newton
# 11: Newton -initial
# 12: Newton -initialThenCurrent
# 20: NewtonLineSearch
# 21: NewtonLineSearch -type Bisection
# 22: NewtonLineSearch -type Secant
# 23: NewtonLineSearch -type RegulaFalsi
# 30: ModifiedNewton
# 31: ModifiedNewton -initial
# 40: KrylovNewton
# 41: KrylovNewton -iterate initial
# 42: KrylovNewton -increment initial
# 43: KrylovNewton -iterate initial -increment initial
# 44: KrylovNewton -maxDim 6
# 50: SecantNewton
# 51: SecantNewton -iterate initial
# 52: SecantNewton -increment initial
# 53: SecantNewton -iterate initial -increment initial
# 60: BFGS
# 70: Broyden
# 80: User-defined0
# 81: User-defined1
# 82: User-defined2
# About User-defined algoType:
# If special algorithm is to be used, SmartAyalize provides 3 user-defined algorithms.
# The script author should specify the algorithm as a procedure in the script.
# The script name must be `UserAlgorithm0`, `UserAlgorithm1`, `UserAlgorithm2`.
# Example see section Example No. 4.
# Change Log:
# 2019-06-28 10:42:19 v0.0
# Create file.
# 2019-06-28 18:04:52 v1.0
# Created the main transient function SmartAnalyzeTransient
# 2019-07-03 12:27:06 v2.0
# Created the main static fuction SmartAnalyzeStatic
# 2019-07-10 13:12:21 v2.1
# Improve user interface and robustness
# 2019-07-12 16:11:26 v2.2
# Add force converge report at the end of analysis
# 2020-03-31 00:48:57 v3.0
# Add a parameter on whether reorder algoTypes on convergence.
# Bug fix on finish percent.
# 2020-05-30 22:33:48 v4.0 alpha
# Wholely refactor. Use mixed recurrance and recursive function.
# Deprecate tryForceConverge and reorderAlgoTypes
# Use array instead of dict to setup control parameters.
# Reorganize documentation. Make code cleaner.
# 2020-06-01 10:22:28 v4.0.1 alpha
# Bug fixes and output improvement.
# 2020-06-11 19:58:00 v4.0.2 alpha
# Bug fix on setting default initialStep and return code.
#####

proc SmartAnalyzeTransient { dt npts {ud ""} } {
# default control parameters
set control(analysis) "Transient"
set control(testType) "EnergyIncr"
set control(testTol) 1.0e-6
set control(testIterTimes) 7
set control(testPrintFlag) 0
set control(tryAddTestTimes) True
set control(normTol) 1.0e3
set control(testIterTimesMore) 50
set control(tryLooseTestTol) True
set control(looseTestTolTo) 1.
set control(tryAlterAlgoTypes) False
set control(algoTypes) { 40 }
set control(initialStep) $dt
set control(relaxation) 0.5
set control(minStep) 1.0e-6
set control(printPer) 10
set control(debugMode) False
# set user control parameters
if {$ud != ""} {
upvar $ud userControl
array set control [array get userControl]
}
puts "Control parameters:"
puts [array get control]
# initialize analyze commands
test $control(testType) $control(testTol) $control(testIterTimes) $control(testPrintFlag)
setAlgorithm [lindex $control(algoTypes) 0]
analysis Transient
# set an array to store current status.
set current(startTime) [clock clicks -millisec]
set current(algoIndex) 0
set current(testIterTimes) $control(testIterTimes)
set current(testTol) $control(testTol)
set current(counter) 0
set current(progress) 0
set current(segs) $npts
# divide the whole process into segments.
for {set seg 1} {$seg <= $npts} {incr seg} {
set ok [RecursiveAnalyze $control(initialStep) 0 $control(testIterTimes) $control(testTol) control current]
if {$ok < 0} {
puts ">>> SmartAnalyze: Analyze failed. Time consumption: [expr ([clock clicks -millisec]-$current(startTime)) / 1000.]s."
return $ok
}
set current(progress) $seg
if {$control(debugMode)} {
puts "*** SmartAnalyze: progress $current(progress)/$current(segs)"
}
}
puts ">>> SmartAnalyze: Successfully finished! Time consumption: [expr ([clock clicks -millisec]-$current(startTime)) / 1000.]s."
}

proc SmartAnalyzeStatic { node dof maxStep targets {ud ""} } {
# set initial step
if {$maxStep > [lindex $targets 0]} {
set initialStep [lindex $targets 0]
} else {
set initialStep $maxStep
}
# default control parameters
set control(analysis) "Static"
set control(testType) "EnergyIncr"
set control(testTol) 1.0e-6
set control(testIterTimes) 7
set control(testPrintFlag) 0
set control(tryAddTestTimes) True
set control(normTol) 1.0e3
set control(testIterTimesMore) 50
set control(tryLooseTestTol) True
set control(looseTestTolTo) 1.
set control(tryAlterAlgoTypes) False
set control(algoTypes) { 40 }
set control(initialStep) $initialStep
set control(relaxation) 0.5
set control(minStep) 1.0e-6
set control(printPer) 10
set control(debugMode) False
# set user control parameters
if {$ud != ""} {
upvar $ud userControl
array set control [array get userControl]
}
puts "Control parameters:"
puts [array get control]
# initialize analyze commands
test $control(testType) $control(testTol) $control(testIterTimes) $control(testPrintFlag)
setAlgorithm [lindex $control(algoTypes) 0]
integrator DisplacementControl $node $dof $initialStep
analysis Static
# set an array to store current status.
set current(startTime) [clock clicks -millisec]
set current(algoIndex) 0
set current(testIterTimes) $control(testIterTimes)
set current(testTol) $control(testTol)
set current(counter) 0
set current(progress) 0
set current(step) $initialStep
set current(node) $node
set current(dof) $dof
# calcuate whole distance; divide the whole process into segments.
set distance 0
set segs
  • for {set i 0} {$i < [llength $targets]} {incr i} {
    if {$i == 0} {
    set section [lindex $targets 0]
    set positive True
    } else {
    set section [expr [lindex $targets $i] - [lindex $targets $i-1]]
    if {$section >= 0} {
    set positive True
    } else {
    set positive False
    }
    }
    set distance [expr $distance + abs($section)]
    if {$positive} {
    for {set j 0} {[expr $section - $j*$maxStep] > $maxStep} {incr j} {
    lappend segs $maxStep
    }
    lappend segs [expr $section - [expr $j*$maxStep]]
    } else {
    for {set j 0} {[expr -$section - $j*$maxStep] > $maxStep} {incr j} {
    lappend segs [expr -$maxStep]
    }
    lappend segs [expr $section + [expr $j*$maxStep]]
    }
    }
    set current(segs) [llength $segs]
    # Run recursive analysis
    foreach seg $segs {
    set ok [RecursiveAnalyze $seg 0 $control(testIterTimes) $control(testTol) control current]
    if {$ok < 0} {
    puts ">>> SmartAnalyze: Analyze failed. Time consumption: [expr ([clock clicks -millisec]-$current(startTime)) / 1000.]s."
    return $ok
    }
    incr current(progress)
    if {$control(debugMode)} {
    puts "*** SmartAnalyze: progress $current(progress)/$current(segs)"
    }
    }
    puts ">>> SmartAnalyze: Successfully Finished! Time consumption: [expr ([clock clicks -millisec]-$current(startTime)) / 1000.]s."
    }

    proc RecursiveAnalyze {step algoIndex testIterTimes testTol vcontrol vcurrent} {
    upvar $vcontrol control $vcurrent current
    if {$control(debugMode)} {
    puts "*** SmartAnalyze: Run Recursive: step=$step, algoI=$algoIndex, times=$testIterTimes, tol=$testTol"
    }
    if {$algoIndex != $current(algoIndex)} {
    puts ">>> SmartAnalyze: Setting algorithm to [lindex $control(algoTypes) $algoIndex]"
    setAlgorithm [lindex $control(algoTypes) $algoIndex]
    set current(algoIndex) $algoIndex
    }
    if {$testIterTimes != $current(testIterTimes) || $testTol != $current(testTol)} {
    if {$testIterTimes != $current(testIterTimes)} {
    puts ">>> SmartAnalyze: Setting test iteration times to $testIterTimes"
    set current(testIterTimes) $testIterTimes
    }
    if {$testTol != $current(testTol)} {
    puts ">>> SmartAnalyze: Setting test tolerance to $testTol"
    set current(testTol) $testTol
    }
    test $control(testType) $testTol $testIterTimes $control(testPrintFlag)
    }
    if {$control(analysis) == "Static" && $current(step) != $step} {
    puts ">>> SmartAnalyze: Setting step to $step"
    integrator DisplacementControl $current(node) $current(dof) $step
    set current(step) $step
    }
    # trial analyze once
    if {$control(analysis) == "Static"} {
    set ok [analyze 1]
    } else {
    set ok [analyze 1 $step]
    }
    set current(counter) [expr $current(counter) + 1]
    if {$ok == 0} {
    if {$current(counter) >= $control(printPer)} {
    puts "* SmartAnalyze: progress $current(progress)/$current(segs). Time consumption: [expr ([clock clicks -millisec]-$current(startTime)) / 1000.]s."
    set current(counter) 0
    }
    return 0
    }
    # Add test iteration times. Use current step, algorithm and test tolerance.
    if {$control(tryAddTestTimes) && $testIterTimes != $control(testIterTimesMore)} {
    set norm [testNorms]
    if { [lindex $norm end] < $control(normTol) } {
    puts ">>> SmartAnalyze: Adding test times to $control(testIterTimesMore)."
    return [RecursiveAnalyze $step $algoIndex $control(testIterTimesMore) $testTol control current]
    } else {
    puts ">>> SmartAnalyze: Not adding test times for norm [lindex $norm end]."
    }
    }
    # Change algorithm. Set back test iteration times.
    if {$control(tryAlterAlgoTypes) && [incr algoIndex] < [llength $control(algoTypes)]} {
    puts ">>> SmartAnalyze: Setting algorithm to [lindex $control(algoTypes) $algoIndex]."
    return [RecursiveAnalyze $step $algoIndex $testIterTimes $testTol control current]
    }
    # If step length is too small, try add test tolerance. set algorithm and test iteration times back.
    if {[expr abs($step)] < [expr 2*$control(minStep)]} {
    puts ">>> SmartAnalyze: current step $step is too small!"
    if {$control(tryLooseTestTol) && $current(testTol) != $control(looseTestTolTo)} {
    puts "!!! SmartAnalyze: Warning: Loosing test tolerance "
    return [RecursiveAnalyze $step 0 $control(testIterTimes) $control(looseTestTolTo) control current]
    }
    # Here, all methods have been tried. Return negative value.
    return -1
    }
    # Split the current step into two steps.
    set stepNew [expr $step * $control(relaxation)]
    if {$stepNew > 0 && $stepNew < $control(minStep)} {
    set stepNew $control(minStep)
    }
    if {$stepNew < 0 && $stepNew > [expr -$control(minStep)]} {
    set stepNew [expr -$control(minStep)]
    }
    set stepRest [expr $step - $stepNew]
    puts ">>> SmartAnalyze: Dividing the current step $step into $stepNew and $stepRest"
    set ok [RecursiveAnalyze $stepNew 0 $testIterTimes $testTol control current]
    if {$ok < 0} {
    return -1
    }
    set ok [RecursiveAnalyze $stepRest 0 $testIterTimes $testTol control current]
    if {$ok < 0} {
    return -1
    }
    return 1
    }

    proc setAlgorithm { type } {
    switch $type {
    0 {
    puts "> SmartAnalyze: Setting algorithm to Linear ..."
    algorithm Linear
    }
    1 {
    puts "> SmartAnalyze: Setting algorithm to -initial ..."
    algorithm -initial
    }
    2 {
    puts "> SmartAnalyze: Setting algorithm to -factorOnce ..."
    algorithm -factorOnce
    }
    10 {
    puts "> SmartAnalyze: Setting algorithm to Newton ..."
    algorithm Newton
    }
    11 {
    puts "> SmartAnalyze: Setting algorithm to Newton -initial ..."
    algorithm Newton -initial
    }
    12 {
    puts "> SmartAnalyze: Setting algorithm to Newton -initialThenCurrent ..."
    algorithm Newton -initialThenCurrent
    }
    20 {
    puts "> SmartAnalyze: Setting algorithm to NewtonLineSearch ..."
    algorithm NewtonLineSearch
    }
    21 {
    puts "> SmartAnalyze: Setting algorithm to NewtonLineSearch -type Bisection ..."
    algorithm NewtonLineSearch -type Bisection
    }
    22 {
    puts "> SmartAnalyze: Setting algorithm to NewtonLineSearch -type Secant ..."
    algorithm NewtonLineSearch -type Secant
    }
    23 {
    puts "> SmartAnalyze: Setting algorithm to NewtonLineSearch -type RegulaFalsi ..."
    algorithm NewtonLineSearch -type RegulaFalsi
    }
    30 {
    puts "> SmartAnalyze: Setting algorithm to Modified Newton ..."
    algorithm Modified Newton
    }
    31 {
    puts "> SmartAnalyze: Setting algorithm to ModifiedNewton -initial ..."
    algorithm ModifiedNewton -initial
    }
    40 {
    puts "> SmartAnalyze: Setting algorithm to KrylovNewton ..."
    algorithm KrylovNewton
    }
    41 {
    puts "> SmartAnalyze: Setting algorithm to KrylovNewton -iterate initial ..."
    algorithm KrylovNewton -iterate initial
    }
    42 {
    puts "> SmartAnalyze: Setting algorithm to KrylovNewton -increment initial ..."
    algorithm KrylovNewton -increment initial
    }
    43 {
    puts "> SmartAnalyze: Setting algorithm to KrylovNewton -iterate initial -increment initial ..."
    algorithm KrylovNewton -iterate initial -increment initial
    }
    44 {
    puts "> SmartAnalyze: Setting algorithm to KrylovNewton -maxDim 50"
    algorithm KrylovNewton -maxDim 50
    }
    45 {
    puts "> SmartAnalyze: Setting algorithm to KrylovNewton -iterate initial -increment initial -maxDim 50"
    algorithm KrylovNewton -iterate initial -increment initial -maxDim 50
    }
    50 {
    puts "> SmartAnalyze: Setting algorithm to SecantNewton ..."
    algorithm SecantNewton
    }
    51 {
    puts "> SmartAnalyze: Setting algorithm to SecantNewton -iterate initial ..."
    algorithm SecantNewton -iterate initial
    }
    52 {
    puts "> SmartAnalyze: Setting algorithm to SecantNewton -increment initial ..."
    algorithm SecantNewton -increment initial
    }
    53 {
    puts "> SmartAnalyze: Setting algorithm to SecantNewton -iterate initial -increment initial ..."
    algorithm SecantNewton -iterate initial -increment initial
    }
    60 {
    puts "> SmartAnalyze: Setting algorithm to BFGS ..."
    algorithm BFGS
    }
    70 {
    puts "> SmartAnalyze: Setting algorithm to Broyden ..."
    algorithm Broyden
    }
    80 {
    puts "> SmartAnalyze: Using user defined algorithm UserAlgorithm0."
    UserAlgorithm0
    }
    81 {
    puts "> SmartAnalyze: Using user defined algorithm UserAlgorithm1."
    UserAlgorithm1
    }
    82 {
    puts "> SmartAnalyze: Using user defined algorithm UserAlgorithm2."
    UserAlgorithm2
    }
    default {
    puts "!!! SmartAnalyze: ERROR! WRONG Algorithm Type!"
    }
    }
    }

selimgunay
Posts: 913
Joined: Mon Sep 09, 2013 8:50 pm
Location: University of California, Berkeley

Re: Nonlinear Spring Element

Post by selimgunay » Sat Aug 08, 2020 8:34 pm

It looks like you have equalDOF between the two end nodes of the zerolength elements for all DOF. For example,

You have
equalDOF 1 300000 1 2 3 4 5 6

and then
element zeroLength 100016 1 300000 -mat 100016 -dir 6

which makes the latter line idle and means that there is no zerolength element

sedatacem
Posts: 17
Joined: Tue Dec 10, 2019 10:18 am

Re: Nonlinear Spring Element

Post by sedatacem » Sun Aug 09, 2020 5:11 am

Yes sorry it was my mistake of using Zero Length Element...it should be like this without equaldof command:
element zeroLength 100016 1 300000 -mat 100016 100016 100016 100016 100016 100016 -dir 1 2 3 4 5 6
Of course ı should define a seperate material for each direction....

Thank you very much Dr. Selim.

Post Reply