a one story symmetric linear 3D frame
Moderators: silvia, selimgunay, Moderators
-
- Posts: 8
- Joined: Tue Nov 20, 2012 6:17 am
- Location: NBG Construction Company
a one story symmetric linear 3D frame
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 #
###################################################################################################################################
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 #
###################################################################################################################################
Re: a one story symmetric linear 3D frame
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.
-
- Posts: 8
- Joined: Tue Nov 20, 2012 6:17 am
- Location: NBG Construction Company
Re: a one story symmetric linear 3D frame
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
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
-
- Posts: 8
- Joined: Tue Nov 20, 2012 6:17 am
- Location: NBG Construction Company
Re: a one story symmetric linear 3D frame
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.
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.
Re: a one story symmetric linear 3D frame
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.
-
- Posts: 8
- Joined: Tue Nov 20, 2012 6:17 am
- Location: NBG Construction Company
Re: a one story symmetric linear 3D frame
Dear Dr. Terzic,
I sent an email to you by this subject: "doRayleigh command problem in the zero-length element".
Thank you.
Mohsen
I sent an email to you by this subject: "doRayleigh command problem in the zero-length element".
Thank you.
Mohsen
Re: a one story symmetric linear 3D frame
Thank you for your contribution! I have changed the wiki page accordingly.