a one story symmetric linear 3D frame

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

Moderators: silvia, selimgunay, Moderators

Post Reply
MohsenAmjadEQEng
Posts: 8
Joined: Tue Nov 20, 2012 6:17 am
Location: NBG Construction Company

a one story symmetric linear 3D frame

Post by MohsenAmjadEQEng »

Dear Vesna,

I modeled a one story symmetric linear 3D frame with 3 degrees of freedom in the OpenSEES. To model the linear substructure, I employed a zero-length element and put it right at the mass center of the model. I also assigned three elastic materials to the zero-length element along the X (=1) and Y (=2) axes and around the Z (=6) axis. To model the rigid floor, I used the rigidDiaphragm command in the OpenSEES. Finally, I excited this model under two horizontal components of an earthquake.

On the other hand, I developed a similar model in SAP2000 to verify the output results of my main model in OpenSEES. The natural periods and mode shapes of two models are exactly alike; however, when comparing the displacement (time history response) of the rigid floor along the X (or Y) axis resulted from two models, the responses are not identical and even difference between them is remarkable.

To find the right response, I wrote a code and solved the well-known equation of motion of a one story torsional structure by Runge-Kutta method in Matlab. At last, I found that the response of the SAP2000 is correct and OpenSEES gives me wrong output.

Actually, I spent a lot of time to find the problem in my OpenSEES model but I could not recognize it. I am confused because the model is not so complicated and I think everything is right in it. I suppose the problem is due to the zero-length but I do not know what it is exactly.

I put the model here and would be very grateful, if you take a look at it and tell me where my mistake is!

Thank You.

###################################################################################################################################
# START #
###################################################################################################################################

wipe all ;

###################################

set Output "OUTPUT = 3DOF 3D MODEL LINEAR" ;

set g 9.806 ;
set pi [expr 2*asin(1.0)] ;

###################################

model basic -ndm 3 -ndf 6 ;
file mkdir $Output ;

###################################################################################################################################
# Input #
###################################################################################################################################

set AccX "Ax-SanFernando-PGA=1.160g-dt=0.01-N=4164.txt" ;
set AccY "Ay-SanFernando-PGA=1.226g-dt=0.01-N=4164.txt" ;

set NEQ 4164 ;
set dtEQ 0.01 ;
set ndtEQ 1 ;

set Nanalysis [expr $NEQ*$ndtEQ] ;
set dtanalysis [expr $dtEQ/$ndtEQ] ;

###################################

set L 3.0 ;
set W 3.0 ;

set M [expr $L*$W*0.25*2400.0] ;
set I [expr (1.0/12.0)*$M*(pow($L,2.0)+pow($W,2.0))] ;

###################################

set damp 0.05 ;

set Kx [expr 250000.0/0.025] ;
set Ky [expr 125000.0/0.025] ;
set Kt [expr 50000.0/0.025] ;

###################################

set Erigid [expr 21690.0E6*pow(10,3)] ;
set Grigid [expr $Erigid/(2*(1+0.2))] ;
set Arigid 0.25 ;
set Jrigid 8.802E-3 ;
set Izrigid 5.208E-3 ;
set Iyrigid 5.208E-3 ;

###################################################################################################################################
# Node #
###################################################################################################################################

# Corner ##########################

set xc1 [expr -0.5*$L] ;
set yc1 [expr -0.5*$W] ;

set xc2 [expr +0.5*$L] ;
set yc2 [expr -0.5*$W] ;

set xc3 [expr +0.5*$L] ;
set yc3 [expr +0.5*$W] ;

set xc4 [expr -0.5*$L] ;
set yc4 [expr +0.5*$W] ;

# Mass Center #####################

set xm 0.0 ;
set ym 0.0 ;

# node ##########################

node 1 $xc1 $yc1 0.0 ;
node 2 $xc2 $yc2 0.0 ;
node 3 $xc3 $yc3 0.0 ;
node 4 $xc4 $yc4 0.0 ;

node 10 $xm $ym 0.0 ;
node 20 $xm $ym 0.0 ;

###################################################################################################################################
# Mass #
###################################################################################################################################

mass 20 $M $M 0 0 0 $I ;

###################################################################################################################################
# Support Condition #
###################################################################################################################################

fix 10 1 1 1 1 1 1 ;
fix 20 0 0 1 1 1 0 ;

rigidDiaphragm 3 20 1 2 3 4 ;

###################################################################################################################################
# Material #
###################################################################################################################################

uniaxialMaterial Elastic 1 $Kx ;
uniaxialMaterial Elastic 2 $Ky ;
uniaxialMaterial Elastic 6 $Kt ;

###################################################################################################################################
# Element #
###################################################################################################################################

geomTransf Linear 1 0 0 1 ;

element elasticBeamColumn 1 1 2 $Arigid $Erigid $Grigid $Jrigid $Iyrigid $Izrigid 1 ;
element elasticBeamColumn 2 2 3 $Arigid $Erigid $Grigid $Jrigid $Iyrigid $Izrigid 1 ;
element elasticBeamColumn 3 3 4 $Arigid $Erigid $Grigid $Jrigid $Iyrigid $Izrigid 1 ;
element elasticBeamColumn 4 4 1 $Arigid $Erigid $Grigid $Jrigid $Iyrigid $Izrigid 1 ;

element zeroLength 5 10 20 -mat 1 2 6 -dir 1 2 6 ;

###################################################################################################################################
# Record #
###################################################################################################################################

recorder Node -file $Output/DisMassCnterPoint.txt -time -node 20 -dof 1 2 6 disp ;
recorder Node -file $Output/VelMassCnterPoint.txt -time -node 20 -dof 1 2 6 vel ;
recorder Node -file $Output/AccMassCnterPoint.txt -time -node 20 -dof 1 2 6 accel ;
recorder Node -file $Output/DisCornerPoint.txt -time -node 1 2 3 4 -dof 1 2 disp ;

recorder Element -file $Output/Fcol.txt -time -ele 5 localForce ;
recorder Element -file $Output/Ucol.txt -time -ele 5 deformation ;

###################################################################################################################################
# Damping #
###################################################################################################################################

###############################################################################
set nEigenI 1 ; #
set nEigenJ 3 ; #
###############################################################################
set MpropSwitch 1.0 ; #
set KcurrSwitch 0.0 ; #
set KcommSwitch 0.0 ; #
set KinitSwitch 1.0 ; #
#
set lambdaN [eigen -generalized -fullGenLapack [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*$damp*(2*$omegaI*$omegaJ)/($omegaI+$omegaJ)] ; #
set betaKcurr [expr $KcurrSwitch*2.0*$damp/($omegaI+$omegaJ)] ; #
set betaKinit [expr $KinitSwitch*2.0*$damp/($omegaI+$omegaJ)] ; #
set betaKcomm [expr $KcommSwitch*2.0*$damp/($omegaI+$omegaJ)] ; #
#
rayleigh $alphaM $betaKcurr $betaKinit $betaKcomm ; #
###############################################################################

###################################################################################################################################
# Loading #
###################################################################################################################################

set accelSeriesx "Series -dt $dtEQ -filePath $AccX -factor $g" ;
pattern UniformExcitation 1 1 -accel $accelSeriesx ;

set accelSeriesy "Series -dt $dtEQ -filePath $AccY -factor $g" ;
pattern UniformExcitation 2 2 -accel $accelSeriesy ;

###################################################################################################################################
# Analysis #
###################################################################################################################################

###############################################################################
wipeAnalysis ; #
constraints Transformation ; #
numberer RCM ; #
system SparseGeneral ; #
test EnergyIncr 1e-7 25 -1 ; #
algorithm ModifiedNewton ; #
integrator Newmark 0.5 0.25 ; #
analysis Transient ; #
analyze $Nanalysis $dtanalysis ; #
###############################################################################

###################################################################################################################################
# End #
###################################################################################################################################
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: a one story symmetric linear 3D frame

Post by vesna »

The problem may come from the transformation constraints. You have master node of one constrain (node 20 of rigid diaphragm ) to be slave of another constrain (node 10 of zero length element) which transformation handler can not solve. Change constraint handler.
MohsenAmjadEQEng
Posts: 8
Joined: Tue Nov 20, 2012 6:17 am
Location: NBG Construction Company

Re: a one story symmetric linear 3D frame

Post by MohsenAmjadEQEng »

Dear Vesna,

Thank you for your comment. Actually, the problem was due to assigning the Rayleigh damping in the model. I did not put this command at the end of the zero-length element (-doRayleigh 1).

However, I have another problem and would be grateful, if you investigate it. When I rotate a zero-length by using the "-orient" command, the Rayleigh damping at the end of the zero-length element command does not work, but when I do not use "-orient" the Rayleigh damping works correctly.

I) Here "-doRayleigh 1" does not work:
element zeroLength 1 11 21 -mat 1 2 3 -dir 1 2 3 -orient [expr cos($beta)] [expr sin($beta)] 0.0 [expr -sin($beta)] [expr cos($beta)] 0.0 -doRayleigh 1 ;

II) But, here it works properly:
element zeroLength 1 11 21 -mat 1 2 3 -dir 1 2 3 -doRayleigh 1 ;

Maybe it is a small bug in the zero-length command, if right, please tell me how can I model such a spring (command I) in opensees?

Best,
Mohsen
MohsenAmjadEQEng
Posts: 8
Joined: Tue Nov 20, 2012 6:17 am
Location: NBG Construction Company

Re: a one story symmetric linear 3D frame

Post by MohsenAmjadEQEng »

Dear Vesna,

I found that!

In the case of rotating a zero-length element, If we want to assign damping to it, we should put "-doRayleigh 1" before the "-orient" command. So, the OpenSEES assigns damping correctly. This is especially important for those people who want to model skewed structural members with spring in OpenSEES!

Dr. Vesna: I think it is better you replace the -orient command with -doRayleigh in the help documents of openSEES, it seems tricky in the first glance.
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: a one story symmetric linear 3D frame

Post by vesna »

Thanks for sharing this with us. Can you describe the difference in results between -orient command at the end and -orient command before "-doRayleigh 1"? Thanks.
MohsenAmjadEQEng
Posts: 8
Joined: Tue Nov 20, 2012 6:17 am
Location: NBG Construction Company

Re: a one story symmetric linear 3D frame

Post by MohsenAmjadEQEng »

Dear Dr. Terzic,

I sent an email to you by this subject: "doRayleigh command problem in the zero-length element".

Thank you.
Mohsen
vesna
Posts: 3033
Joined: Tue May 23, 2006 11:23 am
Location: UC Berkeley

Re: a one story symmetric linear 3D frame

Post by vesna »

Thank you for your contribution! I have changed the wiki page accordingly.
Post Reply