3D RC frame lumped plasticity pushover analysis

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

Moderators: silvia, selimgunay, Moderators

Post Reply
chandrasekhar
Posts: 5
Joined: Sun May 17, 2020 7:28 am

3D RC frame lumped plasticity pushover analysis

Post by chandrasekhar » Sat Sep 05, 2020 6:33 am

Hello all,

I am working on a simple 1 storey 1 bay RC portal frame structure with fixed base and MODIMK rotational springs in all four columns and two beams parallel to global Z-direction as per OpenSees standard notation. After defining nodes, rigid diaphragm constraints and rotational spring properties, it showed an error while running pushover analysis in the global Z-direction which is as follows:

ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
ProfileSPDLinDirectSolver::solve() - aii < 0 (i, aii): (1, 0)
Eigen Value Analysis complete
periods are 112620.55513978569 39.817379120178174 39.81737912017817 19.908689560
089087 19.908689560089083 19.908689560089083 19.908689560089083
WARNING BandGenLinLapackSolver::solve() -factorization failed, matrix singular U
(i,i) = 0, i= 2
WARNING NewtonRaphson::solveCurrentStep() -the LinearSysOfEqn failed in solve()
StaticAnalysis::analyze() - the Algorithm failed at iteration: 0 with domain at
load factor 0.1
OpenSees > analyze failed, returned: -3 error flag
Model Built

I assume the error is in either rigid diaphragm definition or rotational spring orientation which I am not able to figure out. Following is the input file for reference and I would appreciate any help in sorting out the issue. Thank you.

wipe;
model BasicBuilder -ndm 3 -ndf 6;
source RotSpring2DModIKModel.tcl

set LCol 3000.;
set LBeam 4000.;

set supermass 10.05;
set Negligible 1.0e-15;
set SeisWeight [expr ($supermass)*4.*9810.];

node 1 0. 0. 0.
node 2 4000. 0. 0.
node 3 0. 3000. 0. -mass $supermass $supermass $supermass $Negligible $Negligible $Negligible
node 4 4000. 3000. 0. -mass $supermass $supermass $supermass $Negligible $Negligible $Negligible
node 5 0. 0. 4000.
node 6 4000. 0. 4000.
node 7 0. 3000. 4000. -mass $supermass $supermass $supermass $Negligible $Negligible $Negligible
node 8 4000. 3000. 4000. -mass $supermass $supermass $supermass $Negligible $Negligible $Negligible

#extra nodes for rotational springs
#Beam springs
node 51 0. 3000. 0.
node 52 4000. 3000. 0.
node 71 0. 3000. 4000.
node 72 4000. 3000. 4000.
#Column springs
node 11 0. 0. 0.
node 31 0. 3000. 0.
node 21 4000. 0. 0.
node 41 4000. 3000. 0.
node 53 0. 0. 4000.
node 73 0. 3000. 4000.
node 61 4000. 0. 4000.
node 81 4000. 3000. 4000.

#Boundary conditions
fix 1 1 1 1 1 1 1;
fix 2 1 1 1 1 1 1;
fix 5 1 1 1 1 1 1;
fix 6 1 1 1 1 1 1;

#Rigid diaphragm constraints
node 100 2000. 3000. 2000.;
fix 100 0 1 0 1 0 1;
rigidDiaphragm 2 100 3 4 7 8

#Section definition
set ColSecTag 1
set ColSecTagE 2
set BeamSecTagE 3
set BeamSecTag 4
set colconcID 10
set steelID 11
set Es 200000.
set Ag [expr 300.*450.];
set Iz 2.279e9;
set Iy 1.013e9;
set Ecol 22360.;
set Ebeam 19360.;
set Gcol [expr $Ecol/(2.*(1. + 0.2))];
set Gbeam [expr $Ebeam/(2.*(1. + 0.2))];
set J 2.377e9;
set GJ [expr $Gcol*$J];

# #Rotational springs definition for beams
set Myz 78000000.;
set n 10.;
set Izmod [expr ($n + 1.)*$Iz/$n];
set Ks [expr $n*6.*$Ebeam*$Izmod/4000.];
set a_mem [expr (($n + 1.)*$Myz*(1.1 - 1.0)) / ($Ks*0.025)];
set b [expr ($a_mem)/(1.0 + $n*(1.0 - $a_mem))];

#Beam hinges
rotSpring2DModIKModel 351 3 51 $Ks $b $b $Myz [expr -$Myz] 1000. 1000. 1000. 1000. 1. 1. 1. 1. 0.025 0.025 0.0003 0.0003 0.2 0.2 0.05 0.05 1. 1.;
rotSpring2DModIKModel 452 4 52 $Ks $b $b $Myz [expr -$Myz] 1000. 1000. 1000. 1000. 1. 1. 1. 1. 0.025 0.025 0.0003 0.0003 0.2 0.2 0.05 0.05 1. 1.;
rotSpring2DModIKModel 771 7 71 $Ks $b $b $Myz [expr -$Myz] 1000. 1000. 1000. 1000. 1. 1. 1. 1. 0.025 0.025 0.0003 0.0003 0.2 0.2 0.05 0.05 1. 1.;
rotSpring2DModIKModel 872 8 72 $Ks $b $b $Myz [expr -$Myz] 1000. 1000. 1000. 1000. 1. 1. 1. 1. 0.025 0.025 0.0003 0.0003 0.2 0.2 0.05 0.05 1. 1.;

# #Column hinges
rotSpring2DModIKModel 111 1 11 $Ks $b $b $Myz [expr -$Myz] 1000. 1000. 1000. 1000. 1. 1. 1. 1. 0.04 0.04 0.0003 0.0003 0.2 0.2 0.06 0.06 1. 1.;
rotSpring2DModIKModel 331 3 31 $Ks $b $b $Myz [expr -$Myz] 1000. 1000. 1000. 1000. 1. 1. 1. 1. 0.04 0.04 0.0003 0.0003 0.2 0.2 0.06 0.06 1. 1.;
rotSpring2DModIKModel 221 2 21 $Ks $b $b $Myz [expr -$Myz] 1000. 1000. 1000. 1000. 1. 1. 1. 1. 0.04 0.04 0.0003 0.0003 0.2 0.2 0.06 0.06 1. 1.;
rotSpring2DModIKModel 441 4 41 $Ks $b $b $Myz [expr -$Myz] 1000. 1000. 1000. 1000. 1. 1. 1. 1. 0.04 0.04 0.0003 0.0003 0.2 0.2 0.06 0.06 1. 1.;
rotSpring2DModIKModel 553 5 53 $Ks $b $b $Myz [expr -$Myz] 1000. 1000. 1000. 1000. 1. 1. 1. 1. 0.04 0.04 0.0003 0.0003 0.2 0.2 0.06 0.06 1. 1.;
rotSpring2DModIKModel 773 7 73 $Ks $b $b $Myz [expr -$Myz] 1000. 1000. 1000. 1000. 1. 1. 1. 1. 0.04 0.04 0.0003 0.0003 0.2 0.2 0.06 0.06 1. 1.;
rotSpring2DModIKModel 661 6 61 $Ks $b $b $Myz [expr -$Myz] 1000. 1000. 1000. 1000. 1. 1. 1. 1. 0.04 0.04 0.0003 0.0003 0.2 0.2 0.06 0.06 1. 1.;
rotSpring2DModIKModel 881 8 81 $Ks $b $b $Myz [expr -$Myz] 1000. 1000. 1000. 1000. 1. 1. 1. 1. 0.04 0.04 0.0003 0.0003 0.2 0.2 0.06 0.06 1. 1.;

#Geometric transformation
set IDColTransf 1;
set IDBeamTransf 2;
set IDGirdTransf 3;
geomTransf Linear $IDColTransf 0 0 1;
geomTransf Linear $IDBeamTransf 0 0 1;
geomTransf Linear $IDGirdTransf 1 0 0;

#Element definition
#Columns
element elasticBeamColumn 1 11 31 $Ag $Ecol $Gcol $J $Izmod $Iy $IDColTransf
element elasticBeamColumn 2 21 41 $Ag $Ecol $Gcol $J $Izmod $Iy $IDColTransf
element elasticBeamColumn 3 53 73 $Ag $Ecol $Gcol $J $Izmod $Iy $IDColTransf
element elasticBeamColumn 4 61 81 $Ag $Ecol $Gcol $J $Izmod $Iy $IDColTransf
#Beams
element elasticBeamColumn 5 3 4 $Ag $Ebeam $Gbeam $J $Izmod $Iy $IDBeamTransf;
element elasticBeamColumn 7 7 8 $Ag $Ebeam $Gbeam $J $Izmod $Iy $IDBeamTransf;
#Girders
element elasticBeamColumn 6 51 71 $Ag $Ebeam $Gbeam $J $Izmod $Iy $IDGirdTransf;
element elasticBeamColumn 8 52 72 $Ag $Ebeam $Gbeam $J $Izmod $Iy $IDGirdTransf;

#Eigen Value Analysis
set numModes 7
set lambda [eigen $numModes];
set omega {}
set f {}
set T {}

foreach lam $lambda {
lappend omega [expr sqrt($lam)]
lappend f [expr sqrt($lam)/(2.*3.14)]
lappend T [expr (2.*3.14)/sqrt($lam)]
}

puts "Eigen Value Analysis complete"
puts "periods are $T"

#Gravity loading
set MemSelfWt 3.375;
set Qdlbeam 20.;

pattern Plain 101 Linear {
#Beams
eleLoad -ele 5 6 7 8 -type -beamUniform [expr -$MemSelfWt -$Qdlbeam] 0.;
#Columns
load 3 0. -103625. 0. 0. 0. 0.;
load 4 0. -103625. 0. 0. 0. 0.;
load 7 0. -103625. 0. 0. 0. 0.;
load 8 0. -103625. 0. 0. 0. 0.;
}

wipeAnalysis;
constraints Transformation ;
numberer RCM;
system BandGeneral ;
test EnergyIncr 1.0e-8 6;
algorithm Newton;
set NstepGravity 10;
set DGravity [expr 1./$NstepGravity];
integrator LoadControl $DGravity;
analysis Static;
analyze $NstepGravity;

loadConst -time 0.0
puts "Model Built"

rotSpring2DModIKModel.tcl

proc rotSpring2DModIKModel {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 Bilin $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 5

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

mhscott
Posts: 874
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: 3D RC frame lumped plasticity pushover analysis

Post by mhscott » Sat Sep 05, 2020 6:41 am

You need to define the equalDOFs before the analysis.

chandrasekhar
Posts: 5
Joined: Sun May 17, 2020 7:28 am

Re: 3D RC frame lumped plasticity pushover analysis

Post by chandrasekhar » Sat Sep 05, 2020 6:46 am

Thank you for the prompt reply sir.

I did define the equalDOFs in a separate file rotSpring2DModIKModel.tcl and sourced it in the beginning of the script. Here, I had put it at the end only for illustration purpose.

mhscott
Posts: 874
Joined: Tue Jul 06, 2004 3:38 pm
Location: Corvallis, Oregon USA
Contact:

Re: 3D RC frame lumped plasticity pushover analysis

Post by mhscott » Sat Sep 05, 2020 8:41 am

See if you can figure out the equalDOF for 2D problems, then for a single column in a 3D model.

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

Re: 3D RC frame lumped plasticity pushover analysis

Post by selimgunay » Sat Sep 05, 2020 4:28 pm

Rigid diaphragm looks correct. The problem is probably related to some of the DOFs of the rotational spring.

ankurjain
Posts: 55
Joined: Sun Aug 16, 2020 10:08 pm

Re: 3D RC frame lumped plasticity pushover analysis

Post by ankurjain » Sun Sep 06, 2020 2:56 am

I have solved a 3D 1-Bay frame using Lumped Plasticity approach for Pushover... If you want I can share that tcl file with you ...

chandrasekhar
Posts: 5
Joined: Sun May 17, 2020 7:28 am

Re: 3D RC frame lumped plasticity pushover analysis

Post by chandrasekhar » Sun Sep 06, 2020 5:43 am

mhscott wrote:
Sat Sep 05, 2020 8:41 am
See if you can figure out the equalDOF for 2D problems, then for a single column in a 3D model.
Thank you for the advice sir. I followed your suggestion and tried working on much simpler models.

For 2D SDOF and 3D SDOF cases, pushover result obtained in global X direction when rotational spring defined in -dir 6 at the base. Next, for the 3D SDOF in other lateral direction (global Z) pushover was obtained when rotational spring was defined in -dir 4. I used the same logic and revised the rotational spring orientation accordingly in 3D portal frame example and constrained all other DOF using equalDOF but it throwed the same error. I would be grateful if you can point out where I went wrong, sir.

chandrasekhar
Posts: 5
Joined: Sun May 17, 2020 7:28 am

Re: 3D RC frame lumped plasticity pushover analysis

Post by chandrasekhar » Sun Sep 06, 2020 5:52 am

selimgunay wrote:
Sat Sep 05, 2020 4:28 pm
Rigid diaphragm looks correct. The problem is probably related to some of the DOFs of the rotational spring.
Thank you for the reply sir.

I revised the rotational spring orientation to -dir 4 for all the column and girder hinges to do pushover in global Z direction. It was showing the same error again.
I had constrained the other DOFs i.e. -dir 1 2 3 5 6 using equalDOF option. Is that the correct way or should I define elastic/rigid properties for them too, sir?

chandrasekhar
Posts: 5
Joined: Sun May 17, 2020 7:28 am

Re: 3D RC frame lumped plasticity pushover analysis

Post by chandrasekhar » Sun Sep 06, 2020 5:58 am

ankurjain wrote:
Sun Sep 06, 2020 2:56 am
I have solved a 3D 1-Bay frame using Lumped Plasticity approach for Pushover... If you want I can share that tcl file with you ...
Thank you for the reply sir.
Pushover analysis in global X did not have a problem. However, while running in other lateral direction (global Z) the errors occured which most likely has to do with rotational spring orientation as pointed out by others. I would be glad if you can share your tcl file to the following email address: jcsrao181529@gmail.com. I will try to see where I might have made a mistake.

ankurjain
Posts: 55
Joined: Sun Aug 16, 2020 10:08 pm

Re: 3D RC frame lumped plasticity pushover analysis

Post by ankurjain » Sun Sep 06, 2020 7:24 am

chandrasekhar wrote:
Sun Sep 06, 2020 5:58 am
ankurjain wrote:
Sun Sep 06, 2020 2:56 am
I have solved a 3D 1-Bay frame using Lumped Plasticity approach for Pushover... If you want I can share that tcl file with you ...
Thank you for the reply sir.
Pushover analysis in global X did not have a problem. However, while running in other lateral direction (global Z) the errors occured which most likely has to do with rotational spring orientation as pointed out by others. I would be glad if you can share your tcl file to the following email address: jcsrao181529@gmail.com. I will try to see where I might have made a mistake.
Yes the problem is with orientation.
I have sent you the files. Kindly check.

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

Re: 3D RC frame lumped plasticity pushover analysis

Post by selimgunay » Sun Sep 06, 2020 8:25 am

Using equaldof for other degrees of freedom is the correct way.

Post Reply